Практикум по работе с программой имитационного моделирования gpss world Для студентов специальности icon

Практикум по работе с программой имитационного моделирования gpss world Для студентов специальности


5 чел. помогло.
Смотрите также:
Методические указания по выполнению лабораторных работ по дисциплине «Имитационное моделирование...
История развития компьютерного имитационного моделирования...
Алгоритмы и комплекс программ для решения задач имитационного моделирования объектов прикладной...
Технический отчет математическое моделирование инженерно-геодезических задач на ЭВМ по теме:...
Практикум по микробиологии для студентов специальности: «Агрономия» 2010...
Учебно-методический комплекс для студентов очного отделения, обучающихся по специальности: 0...
Название проекта...
Методика музыкального воспитания Учебно-методический комплекс для студентов очного отделения...
Компьютерные системы имитационного моделирования для отработки баз знаний бортовых...
Программа дисциплины "Банковские и бизнес системы" Направление...
Методические указания и контрольные задания к внеаудиторной самостоятельной работе для студентов...
Учебно-методический комплекс по дисциплине «Практикум на компьютере» для специальности 050111...



Загрузка...
скачать
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

Московский государственный университет

экономики, статистики и информатики (МЭСИ)

Красноярский филиал

Имитационное моделирование
экономических процессов


Практикум по работе
с программой имитационного моделирования
GPSS World


Для студентов специальности
080801.65 — Прикладная информатика в экономике



Красноярск 2008

Содержание

Введение 3

1 Установка программы GPSS 4

2 Вызов готовой модели 5

3 Пояснения к тексту программы 7

4 Запуск на счёт 10

5. Визуализация результатов имитационного моделирования 14

5.1. Окна GPSS 14

5.2. Окно блоков Blocks Window 14

5.3. Окно выражений Expression Window 16

5.4. Окно Обслуживающих Устройств Facilities Window 18

5.5. Окно логических ключей Logicswitches Window 20

5.6. Окно матриц Matrix Window 21

5.7. Окно графиков Plot Window 21

5.8. Окно очередей Queues Window 21

5.9. Окно сохраняемых величин Savevalues Window 22

5.10. Окно многоканальных устройств обслуживания Storages Window 22

5.11. Окно гистограмм Table Window 22

5.12. Стандартный Отчёт REPORT 22

6. Системные Числовые Атрибуты
(System Numerical Attributes) 28

6.1. Назначение Системных Числовых Атрибутов 28

6.2. Системные Числовые Атрибуты
(SNA Entity Specifiers) 28

6.3. Доступные системные числовые атрибуты 29

Литература по GPSS 32


Введение

Программа GPSS (General Purpose Systems Simulator) является классической программой имитационного моделирования.

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

GPSS была создана в 1961 году в фирме IBM Джеффри Гордоном (^ Geoffrey Gordon) почти в то же время, что и языки FORTRAN и ALGOL. Наряду с ними GPSS имелась на всех компьютерах того времени. фирма Minuteman Software в 1982 году адаптировала программу к персональным компьютерам для работы в DOS (версия GPSS/PC), в 1993 году создала первую версию GPSS World для OS/2, а в 2000 году — усовершенствованную версию программы GPSS World для Windows (может применяться с Windows 98, 2000 и XP).

В настоящее время разработана версия GPSS World 5.0.3, которая поставляется в трёх вариантах:

GPSS World Commercial Version 5.0.3 — неограниченное количество блоков (стоимость — по договорённости с фирмой);

GPSS World Personal Version 5.0.3 — 2000 блоков ($695);

GPSS World Student Version 5.0.3 — 180 блоков ($9,95).

В России с декабря 2004 года распространяется версия GPSS World 5.0.2 также в трёх вариантах:

Однопользовательская лицензия студенческой версии GPSS World 5.0.2 — 500 блоков (1 500 руб.);

Однопользовательская лицензия персональной версии GPSS World 5.0.2 — 5000 блоков (23 000 руб.);

Однопользовательская лицензия академическая версии GPSS World 5.0.2 — количество блоков не ограничено, поставляется для вузов (35 000 руб.);

Однопользовательская лицензия коммерческой версии GPSS World 5.0.2 — количество блоков не ограничено, поставляется для фирм (120 000 руб.).

Эксплуатационные документы можно купить отдельно за 700 руб. плюс почтовые расходы.

Фирма Minuteman Software предлагает также бесплатный студенческий вариант программы GPSS World 4.3.5, который обладает всеми функциями полной версии, но имеет ограничение на максимальное количество блоков (не более 150). Эта версия практически не отличается от последней продаваемой в России версии GPSS World 5.0.2 (исправлены некоторые мелкие недочёты). Таким образом, студенческая бесплатная версия GPSS World 4.3.5 позволяет изучить все её особенности, но не может быть использована для коммерческих целей при разработке крупных имитационных моделей. Эксплуатационные документы также не очень нужны, так как вместе с версией GPSS World 4.3.5 предлагается бесплатный электронный вариант книг Reference Manuel (справочник по системе с перечислением всех операторов, правил синтаксиса и встроенных инструментов), а также Tutorial Manual (примеры использования программы с соответствующими файлами, включенными в инсталляционный файл GPSS World 4.3.5).

Материалы о программе GPSS World размещены на сайтах:

http://www.minutemansoftware.com/ — оригинальный сайт фирмы-разработчика;

http://www.gpss.ru/index-h.html — российский сайт по имитационному моделированию.

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

1Установка программы GPSS


Программа GPSS устанавливается сама после запуска инсталляционного файла, который в оригинале называется student.exe, но может называться и иначе (например, GPSSW.exe). Программа размещает себя в каталоге Program Files на диске C: во внутреннем каталоге, носящем название фирмы-разработчика программы Minuteman Software. В этом каталоге размещаются каталоги более низкого уровня: GPSS World Student Version → Sample Models. В каталоге Sample Models находятся образцы программных моделей на GPSS, которые можно запустить и познакомиться с работой программы.

К программе прилагаются две фирменные книги на английском языке:

^ Reference Manuel — справочник по GPSS, в котором приводятся сведения об операторах GPSS и её функционировании;

Tutorial Manual — описание примеров программных моделей с текстами на GPSS и пояснениями.

При первом запуске программы GPSS появляется главное окно программы (1):



  1. — Главное окно программы GPSS после её вызова

Далее можно вызвать готовую программную модель или создать новую.

Вместе с программой GPSS поставляется набор готовых программных моделей, иллюстрирующих возможности GPSS. Эти модели размещены в каталоге Sample Models и подробно рассмотрены в электронной книге Tutorial Manual, хранящемся в файле GPSSWorld-Tutorial_Manual.doc.

Вызов готовой программной модели описан ниже.
^

2Вызов готовой модели


1 Через меню File → Open перейти в подменю выбора пути к файлу и дойти до каталога примеров программных моделей (2).






  1. — Выбор каталога с образцами программных моделей на GPSS

2 Выбрать в качестве пробной модели файл с именем Barber.gps, моделирующий работу парикмахера. На экране появится текст модели на языке GPSS (2).



  1.  — Вызов готовой модели Barber.gps

3 Эту модель необходимо предварительно оттранслировать и лишь затем запустить на выполнение. Трансляцию осуществляют через меню Command → Create Simulation. Эта команда — единственная, которая доступна в меню Command, так как без трансляции модели другие операции невозможны.

В результате появляется ещё одно окно с названием JOURNAL — журнал регистрации процесса моделирования (2).



  1.  — Журнал регистрации процесса моделирования

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

Многие предыдущие варианты программы GPSS были интерпретирующими и поэтому работали медленно, но GPSS World является программой транслирующей и поэтому работает существенно быстрее.

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

3Пояснения к тексту программы


Имеется парикмахерская с одним креслом парикмахера. Через некоторые промежутки времени появляются клиенты, чтобы постричься. Если кресло пустое, то парикмахер начинает обслуживать очередного клиента. Если кресло занято, то клиент встаёт в очередь. Модель позволяет определить размер очереди (средний за время моделирования, максимальный и минимальный) и некоторые другие параметры.

Текст программы располагается по строкам — каждый оператор в собственной строке. Могут быть пустые строки, которые игнорируются. Программа начинается с комментариев. Строки с комментариями помечаются звёздочками (в первом слева столбце) или точкой с запятой (в центре строки). Содержание комментариев может быть любым, так как они игнорируются транслятором.

Первая строка с оператором имеет вид:

Waittime QTABLE Barber,0,2,15 ;Histogram of Waiting times

Слово Waittime является меткой оператора QTABLE. Обычно метки служат для организации перехода из других мест программы, если это требуется. Метка располагается в левых крайних позициях строки перед оператором. Но в данном случае метка привязана к таблице, которая служит для построения гистограммы. Оператор QTABLE означает "таблица очередей": первая буква Q — начальная буква английского слова queue = очередь (читается "кью"). Этот оператор применяется для фиксации и дальнейшего использования данных об очередях. В данном случае речь идёт об очереди клиентов перед занятием ими кресла парикмахера. Таким образом метка превращается в имя таблицы для построения гистограммы после окончания моделирования (гистограммой называется специальный график, отображающий некоторые статистические параметры). Слово Waittime выбрано произвольно, а слово QTABLE — является оператором GPSS. Сочетание Barber,0,2,15 является набором операндов оператора QTABLE. С точки зрения обычного языка программирования это примерно эквивалентно записи QTABLE(Barber,0,2,15). Но в GPSS операнды отделяются от их оператора пробелами и разделяются между собой запятыми. Если какой-то операнд отсутствует, вместо него ставится запятая (могут быть две и более запятые подряд). Если отсутствуют все последние операнды, то их можно не помечать.

Операнд Barber означает имя очереди (задаётся произвольно и присутствует ниже), величину которой необходимо записывать в таблицу. Число 0 означает верхнюю границу первого частотного класса, число 2 означает размер частотного интервала — разницу между верхней и нижней границей каждого частотного класса, число 15 означает число частотных интервалов. Все эти параметры относятся к параметрам гистограмм.

Вторая строка программы:

GENERATE 3.34,1.7 ;Create next customer.

Здесь нет метки. Слово GENERATE является оператором GPSS и используется для генерации (создания) транзактов. В разных случаях транзакты могут иметь разную природу. В данном случае это — клиенты парикмахерской. В других случаях транзакты могут представлять из себя детали для сборки, документы и др. У оператора GENERATE имеется два числовых операнда: 3.34 и 1.7, разделённых запятой. Первое число означает интервал времени, через который появляется очередной транзакт (в данном случае через каждые 3.34 единицы времени). Чему равна единица времени, определяется разработчик модели, когда задаёт время в разных местах программы. В GPSS можно говорить лишь о некоторых временных пропорциях. Число 1.7 означает разброс времени. Поэтому данный оператор имитирует появления нового клиента через каждые 3.34±1.7 единицы времени. В этом интервале (1.64…5.04) единицы времени принято равномерное распределение.

Следующая строка программы:

TEST LE Q$Barber,1,Finis ;Wait if line 1 or less
* else leave shop

Она содержит оператор TEST, аналогичный оператору IF в обычных языках программирования. Этот оператор тестирует (проверяет) выполнение условия и осуществляет переход на какую-либо метку (или без перехода на метку). Стоящий справа вспомогательный оператор LE как раз и означает, какой именно контроль осуществляет основной оператор TEST: LE означает "меньше или равно". Могут быть и другие вспомогательные операторы: GE "больше или равно", E "равно", L "меньше", G "больше", NE "не равно"). Сравниваются между собой два первых операнда, в данном случае: Q$Barber ≤ 1 ? Если условие выполняется, то осуществляется переход на следующий (нижестоящий) оператор. если условие не выполняется, то осуществляется переход на метку, заданную в третьем операнде: Finis. Переменная Q$Barber имеет значение количества человек в очереди. Тогда смысл этого оператора TEST заключается в том, что просматривается длина очереди. Если есть очередь и в очереди более 1 человека, то новый клиент не задерживается, а покидает парикмахерскую. Для этого и сделан переход по на метку Finis в конце программы. Если же очереди нет или в ней всего лишь 1 человек, то клиент занимает очередь.

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

Следующая строка программы:

SAVEVALUE Custnum+,1 ;Total customers who stay

Оператор SAVEVALUE означает "сохраняемая переменная". Имя этой переменной задаётся первым операндом: Custnum. Знак + не относится к имени переменной. В сравнении с обычными языками программирования это — обычная переменная, используемая как счётчик. Знак + означает, что к ней прибавляется следующий операнд (в данном случае 1). Можно использовать также знак – и тогда второй операнд будет отниматься от первого. Если не будет ни +, ни –, то произойдёт присваивание значения второго операнда первому. Второй операнд может быть как числом, так и переменной (а также строкой). С помощью переменной Custnum подсчитывается число клиентов, посетивших парикмахерскую и оставшихся в очереди.

Следующая строка программы:

ASSIGN Custnum,X$Custnum ;Assign number to customer

Оператор ASSIGN означает присвоение значения второго операнда первому. Второй операнд в данном случае имеет то же имя, что переменная в предыдущем операторе, а именно X$Custnum, но имя Custnum стоит после специфического сочетания знаков X$. В данном случае имеется пример так называемых Стандартных Числовых Атрибутов (СЧА) — Стандартным Числовым Атрибутом является сочетание знаков X$. Смысл СЧА будет рассмотрен ниже, а пока достаточно принять, что выражение X$Custnum означает "содержимое переменной Custnum", которое ранее было подсчитано.

Смысл последних двух операторов следующий. Когда оператор GENERATE создаёт очередной транзакт, он присваивает ему очередной номер по порядку. Некоторые из транзактов (клиентов) покидают парикмахерскую из-за очереди. Последние два оператора занимаются тем, что присваивают транзактам новые номера (перенумеровывают их). Новый порядок номеров относится только к тем транзактам, которые решились встать в очередь. Например, пусть генерируются транзакты с номерами 1, 2, 3, 4, 5, 6, 7, 8, 9 и т. д. И пусть транзакты 2, 5 и 8 "испугались" очереди и покинули парикмахерскую. Тогда оставшиеся транзакты будут перенумерованы этими двумя операторами следующим образом:

Прежний номер транзакта

1

2

3

4

5

6

7

8

9



Новый номер транзакта

1




2

3




4

5




6



Жирным шрифтом выделены покинувшие парикмахерскую транзакты (клиенты).

Для чего нужно делать такую перенумерацию? В данном случае — это просто учебная демонстрация работы конкретных операторов. В некоторых практических случаях это может оказаться необходимым. Например, если каждому оставшемуся (и обслуженному впоследствии) транзакту выдаётся чек за оплаченную им услугу и номер чека соответствует номеру транзакта. Или когда требуется перенумеровать очередь. Возможны и другие реальные случаи (кто первый? кто последний?).

Следующая строка программы:

QUEUE Barber ;Begin queue time.

Здесь оператор QUEUE означает "очередь", операнд Barber — её имя. В данном случае "парикмахер". Работа этого оператора заключается в фиксации транзакта, который направляется к креслу парикмахера. Оператор "знает", свободно QUEUE ли кресло. Если оно свободно, то оператор QUEUE пропускает транзакта через себя без задержки. Если же кресло занято, то оператор QUEUE задерживает очередного транзакта и создаёт очередь. В функции оператора QUEUE входит также фиксировать время, когда очередной транзакт вошёл в очередь, а также время выхода его из очереди, время нахождения в очереди и др. параметры. Все эти данные можно использовать в программе, обращаясь к переменной Barber с помощью Стандартных Числовых Атрибутов.

Следующая строка программы:

SEIZE Barber ;Own or wait for barber.

Оператор SEIZE означает "захват транзактом обслуживающим устройством", в данном случае — устройством по имени Barber "парикмахер". Операнд Barber является именем устройства обработки. Это имя совпадает с именем другого (предыдущего) блока — очереди QUEUE. Это — именно совпадение. Имена очереди и устройства обработки могут быть одинаковыми или разными — это не имеет значения (можно проверить в программе). Программа понимает, что если имя используется с оператором SEIZE, то речь может идти только об устройстве обработки. Захват возможен только в том случае, если устройство обработки свободно. Именно сигнал от оператора SEIZE учитывается оператором QUEUE при постановке транзакта в очередь. Если устройство обработки занято, то транзакт остаётся в очереди. Если устройство обработки освободилось, то транзакт перемещается в него и программа переходит к следующему оператору:

DEPART Barber ;End queue time.

Оператор DEPART означает "освободить очередь с именем Barber на 1 транзакт".

Следующая строка программы:

ADVANCE 6.66,1.7 ;Haircut takes a few minutes.

Оператором ADVANCE задаётся время обработки в том устройстве, имя которого было в ближайшем (предыдущем) операторе SEIZE (в данном случае это устройство с именем Barber). Первый и второй операнды аналогичны таковым у оператора GENERATE, т. е. означают, что время обработки составляет 6.66±1.7 единиц времени (с равномерным распределением в заданном диапазоне). Когда оператор SEIZE "впихивает" транзакт в устройство обработки, начинается отсчёт времени. Когда время заканчивается (через 6.66±1.7 единиц), транзакт "выпихивается" из устройства обработки:

RELEASE Barber ;Haircut done. Give up the barber.

Оператор RELEASE осуществляет это "выпихивание" из устройства с именем, заданным в его операнде.

последний оператор программы:

Finis TERMINATE 1 ;Customer leaves.

Здесь Finis — метка (на неё осуществляется переход оператором TEST LE). Оператор TERMINATE означает, что при его выполнении уничтожается 1 транзакт. "Уничтожение" транзакта означает, что он покидает систему (модель), т. е. парикмахерскую. На этот оператор выводят два пути: "испугавшиеся очереди" транзакты попадают на выход через оператор TEST LE, а оставшиеся и дождавшиеся обслуживания — естественным путём после последовательного перемещения через все операторы.

Анализируя эти фрагменты, можно заметить, что существуют пары операторов:

QUEUE "включение в очередь" — DEPART "освободить очередь"

SEIZE "захват устройством обработки" — RELEASE "освободить устройство обработки".

Именно такая жёсткая парность этих операторов позволяет GPSS не перепутать операции даже если очередь и устройство обработки имеют одинаковое (синонимичное) название. Одинаковые названия бывают полезны в больших моделях для их лучшей читаемости.
^

4Запуск на счёт


Для запуска на счёт выполняется следующая последовательность действий:

Command → START (4):



  1.  — Задание продолжительности счёта числом транзактов

В данном окошке необходимо ввести количество транзактов, которые должны пройти через систему до окончания счёта. По умолчанию стоит 1, но, очевидно, обычно требуется большее число транзактов. В данном случае можно ввести 100. Слово START является оператором GPSS и его можно стереть и заново ввести в этом окне. Его можно набить и в конце самой программы, указав там число задаваемых транзактов. Тогда программа после трансляции сразу начнёт считать. Использование окна позволяет постепенно просматривать работу системы, задавая порциями число вводимых транзактов.

После окончания начавшегося счёта появится новое окно (поверх прежних)


GPSS World Simulation Report - Barber.1.1

Friday, February 11, 2005 06:40:58
^ START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 353.895 10 1 0

NAME VALUE
BARBER 10001.000
CUSTNUM 10002.000
FINIS 10.000
WAITTIME 10000.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 102 0 0
2 TEST 102 0 0
^ 3 SAVEVALUE 55 0 0
4 ASSIGN 55 0 0
5 QUEUE 55 1 0
6 SEIZE 54 1 0
7 DEPART 53 0 0
8 ADVANCE 53 0 0
9 RELEASE 53 0 0
FINIS 10 TERMINATE 100 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

BARBER 54 0.987 6.470 1 98 0 0 0 1

^ QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BARBER 2 2 55 1 1.652 10.628 10.824 0

TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.%

WAITTIME 10.709 2.702 0

_ - 0.000 1 1.89
0.000 - 2.000 0 1.89
2.000 - 4.000 1 3.77
4.000 - 6.000 0 3.77
6.000 - 8.000 4 11.32
8.000 - 10.000 12 33.96
10.000 - 12.000 17 66.04
12.000 - 14.000 14 92.45
14.000 - 16.000 4 100.00

^ SAVEVALUE RETRY VALUE

CUSTNUM 0 55.000

CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE

98 0 341.236 98 6 7

CUSTNUM 54.000

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

103 0 356.553 103 0 1

Это окно представляет собой так называемый "Отчёт", где показываются результаты моделирования. Результатами являются различные данные, связанные с очередью, устройством обработки, транзактами.

Вверху — некоторые данные о моделировании: имя файла (Barber.1.1), дата и время моделирования, время старта (START TIME — в данном случае 0.000 единицы), время окончания счёта (END TIME — в данном случае 353.895 единицы), общее число блоков (BLOCKS — в данном случае 10), число обслуживающих устройств (FACILITIES — в данном случае 1, парикмахер), число многоканальных накопителей (STORAGES — данном случае их нет). Ниже располагаются имена переменных (и меток) и их номера, присвоенные им программой при трансляции. Это — вспомогательная информация.

В центре отчёта имеется текст программы (без комментариев). Текст программы расположен в виде таблицы (без прочерченных строк и столбцов). Самая левая колонка — LABEL (метка). Единственная метка в программе — FINIS. Название таблицы WAITTIME не является меткой и здесь не отражено. Колон LOC содержит номера блоков, присвоенные им программой. В колонке WAITTIME располагаются имена блоков. В колонке ENTRY COUNT помещено количество "вошедших" транзактов, а в колонке CURRENT COUNT — оставшихся в них на данный момент. Видно, что на момент остановки счёта в системе осталось два транзакта — один сидит в кресле парикмахера (оператор SEIZE) и один — в очереди (оператор QUEUE). Колонка RETRY содержит информацию о числе транзактов, которые пытались дважды (и более раз) войти в эти блоки. Таковых в данном случае не было.

Ниже идёт информация об обслуживающих устройствах (в GPSS они называются FACILITY). В данном случае имеется только одно обслуживающее устройство (был один оператор SEIZE) по имени BARBER. По нему выдаётся следующая информация:

ENTRIES — число входов в обслуживающее устройство, равно 54 (столько обслужил клиентов-транзактов);

UTIL — коэффициент использования (отношение времени работы к полному времени моделирования), составил 0,987 (максимально возможное число 1,000; вообще-то парикмахер работал всё время, так как к нему непрерывно была очередь, и поэтому коэффициент использования должен был бы быть равным 1,000, но в самом начале работы он немного подождал первого клиента и из-за этого коэффициент использования оказался всё же меньше 1,000);

AVE. TIME — среднее время обслуживания, оказалось равным 6,470 ед. времени;

AVAIL. — доступность обслуживающего устройства для очередных транзактов на момент окончания счёта характеризуется как "доступно" (стоит 1, если бы был 0, то было бы "недоступно"). Доступность или недоступность задаются программно: некоторые из устройств могут быть "выключенными" из работы (например, когда имитируется поломка);

OWNER — порядковый номер транзакта, обслуживаемого в данный момент, равен 98. Транзакты различаются в основном номерами (это их имена) и к транзактам обращаются по номерам;

PEND — число транзактов, ожидающих поступления на обслуживание и помещённых в специальную "цепь ожидания", равно 0 (их нет);

INTER — число транзактов, движение которых было принудительно прервано, равно 0 (их нет);

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

Аналогичные параметры рассчитаны и приведены для очереди. В программе имелась только одна очередь с именем BARBER. Одинаковые имена очереди и обрабатывающего устройства — совпадение. Имена могут быть разными. В то же время, программа никогда не спутает очередь и обслуживающее устройство с одинаковыми именами, так как эти элементы обрабатываются по-разному и имеют совершенно разные параметры. Иногда оказывается удобным давать очереди и обслуживающему устройству одинаковые имена, чтобы указать на их взаимосвязь. Для очереди в отчёте указаны параметры.

  1. ^ Визуализация результатов имитационного моделирования

Для вывода результатов имитационного моделирования в различных формах и представлениях используются окна Simulation Windows и снимки Simulation Snapshot.

    1. Окна GPSS

В GPSS имеются следующие окна:

Blocks Window — Окно Блоков.

Expression Window — Окно Выражений.

Facilities Window — Окно Обслуживающих Устройств.

Logicswitches Window — Окно Логических Ключей.

Matrix Window — Окно Матриц.

Plot Window — Окно Графиков.

Queues Window — Окно Очередей.

Savevalues Window — Окно Сохраняемых Величин.

Storages Window — Окно Накопителей.

Table Window — Окно Гистограмм.

Для работы с этими окнами необходимо после трансляции программы (Command → Create Simulation) использовать команды меню Window → Simulation Window, чтобы попасть на вкладку с выше перечисленными названиями окон и вызвать необходимое окно. Без оттранслированной программы соответствующие команды меню неактивны.

Некоторые из окон вызываются всегда (Окно Блоков Blocks Window, Окно Выражений Expression Window, Окно Обслуживающих Устройств Facilities Window), так как информация для них имеется в любой программе. Некоторые окна вызываются только, если соответствующая им информация имеется в программе (Окно Очередей Queues Window — если есть очереди, Окно Матриц Matrix Window — если есть матрицы, Окно Гистограмм Table Window — если для гистограмм собирается соответствующая информация с помощью команды Tabulate, Окно Логических Ключей Logicswitches Window, Окно Сохраняемых Величин Savevalues Window, Окно Накопителей Storages Window).

    1. Окно блоков Blocks Window

Blocks Window (Окно Блоков) визуально показывает перемещение транзактов через блоки (операторы и команды программы) с отражением мгновенной информации.

Возможны два представления Окна Блоков: в развёрнутой форме (4) и в компактной форме (4). Они отличаются наличием (в развёрнутой форме) или отсутствием (в компактной форме) статистических данных по отдельным блокам. В первом случае при моделировании сразу видны количественные показатели блоков (число транзактов в очередях и др.), но при этом размер окна не всегда вмещает все блоки большой программы. В последнем случае появляется возможность более наглядно представить даже сравнительно большие программы. Переключение между развёрнутой и компактной формами осуществляется с помощью команд меню View → Entities Details. Если пометить Entities Details галочкой, то Окно Блоков будет представлено в развёрнутой форме, при отсутствии галочки — в компактной.

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

Окно Блоков в развёрнутой форме представляет собой таблицу с числом строк, равным числу блоков (операторов) в программе и числом столбцов 7.



  1.  — Окно Блоков Blocks Window в развёрнутом виде



  1.  – Окно Блоков Blocks Window в компактном виде

Информация в колонках Окна Блоков Blocks Window имеет следующий смысл:

Loc — условное графическое обозначение, порядковый номер и краткое наименование блока (оператора) в программе;

Block Type — полное наименование оператора;

Current Count — текущее число транзактов в данном блоке;

Entry Count — число состоявшихся входов транзактов в данный блок;

Retry Chain — число состоявшихся выходов транзактов из данного блока;

Line Number — номер строки в листинге (тексте) программы;

Include File — включённый файл (если он есть).

Работа с Окном Блоков Blocks Window может происходить как в непрерывном (автоматическом) режиме моделирования, так и в шаговом режиме. Выбор режима осуществляется с помощью кнопок на верхней панели окна, имеющих следующий смысл:

 — вызывает продолжение автоматического моделирования, если оно было ранее прервано кнопкой Halt.

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

 — делает 1 шаг (генерирование 1 транзакта) в шаговом режиме.

Для работы в автоматическом режиме (с возможностью останова кнопкой ^ Halt и продолжения работы кнопкой Continue) необходимо в конце программы задать команду START или сделать старт после трансляции программы через меню Command → Start с указанием в появившемся окне Start Command числа требуемых транзактов, например (4):



  1.  – ^ Ввод конечного числа счётчика завершения
    для автоматического режима моделирования


Затем в Окне Блоков следует манипулировать кнопками Halt, Continue и Step. При нажатии кнопки Halt моделирование прервётся и программа перейдёт в режим ожидания. При нажатии кнопки Continue моделирование продолжится. При нажатии кнопки Step произойдёт продвижение программы на 1 генерирование транзакта.

Если программа в автоматическом режиме закончила работу, то последовательным нажатием кнопки Step можно продолжить её работу каждый раз на 1 шаг (1 транзакт).

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

    1. ^ Окно выражений Expression Window

Expression Window — Окно Выражений (4). Показывает динамику изменения некоторых параметров модели, которые можно задать с помощью выражений. В качестве выражений используются Стандартные Числовые Атрибуты (СЧА) совместно с переменными, имеющими имя: например, Q$Имя — означает длину очереди с именем этой очереди, определённым в программе. Например, Q$Barber означает, что в программе имеется очередь, названная Barber. Часть выражения — Q$ (с долларом справа) является Стандартным Числовым Атрибутом с определённой функцией (в данном случае функцией определения значения переменной Barber, являющейся очередью).



  1.  – ^ Окно Выражений Expression Window

Настройка Окна Выражений Expression Window осуществляется с помощью специального окна редактирования (4).



  1.  – Окно редактирования Окна Выражений Expression Window



  1.  – Окно редактирования Окна Выражений Expression Window



  1.  – Окно редактирования Окна Выражений Expression Window
    с запоминанием выводимых выражений


В строке Label помещается поясняющий текст, который затем будет выводиться в Окне Выражений. Ниже записывается само выражение (в данном случае Q$Barber). Затем нажимается кнопка View и введённые записи переписываются вниз (4) в поле Window Content. Команда View означает, что записанные выражения (точнее, получаемые через них переменные) будут затем выводиться в Окне Выражений.

Можно ввести также другие выражения (4) и таким образом составить также список выводимых выражений. Этот список можно запомнить, если нажать на кнопку Memorize (4). При этом можно указать для вывода не все выражения, которые указаны для запоминания.

Для свободного пользования Окном Выражений Expression Window необходимо хорошо знать систему Стандартных Числовых Атрибутов GPSS.

    1. ^ Окно Обслуживающих Устройств Facilities Window

Facilities Window — Окно Обслуживающих Устройств. Обслуживающие Устройства — это устройства, в которых выполняется обслуживание (обработка) транзактов. Все транзакты обслуживаются в этих устройствах в течение некоторого времени. Можно получить информацию о мгновенных, максимальных, средних временах обслуживания транзактов. Окно Обслуживающих Устройств Facilities Window может быть представлено в двух формах — развёрнутой (4) и компактной (4).

Переход от развёрнутой формы к компактной и наоборот осуществляется, как и в случае с Окном Блоков Blocks Window, с помощью меню View → Entities Details.

Компактная форма (4) не представляет существенного интереса и необходима только для того, чтобы просмотреть весь набор Обслуживающих Устройств. В основном используется развёрнутая форма. В этом случае окно содержит таблицу с 10 столбцами и количеством строк, равным количеству Обслуживающих Устройств.



  1.  – Окно Обслуживающих Устройств Facilities Window
    в развёрнутой форме




  1.  – Окно Обслуживающих Устройств Facilities Window
    в компактной форме


Столбцы Окна Обслуживающих Устройств Facilities Window включают следующую информацию:

"Facility" —имя Обслуживающего Устройства, данное ему в программе (в примере BARBER);

"Utilization" — коэффициент использования, равный отношению суммарного времени обслуживания к общему времени моделирования (характеризует эффективность работы Обслуживающего Устройства и может изменяться в диапазоне 0,000…1,000);

"Delay Chain" — число транзактов, находящихся в Цепи Задержки.

"Acquisitions" — достижения, приобретения.

"Available" — доступность устройства (+ доступно, – недоступно).

"Ave. Time" — среднее время обслуживания (average time);

"Owner XN" — обладатель активного транзакта.

"Retry Chain" — число транзактов в Цепи Повторений.

"Pending Chain" — число транзактов в Цепи Продолжения.

"Interrupt Chain" — число транзактов в Цепи Прерываний.

Таким образом, Окно Обслуживающих Устройств Facilities Window в основном даёт информацию о нахождении транзактов в различных Цепях модели (см. соответствующий раздел этого учебного пособия), имеющих отношение к Обслуживающим Устройствам.

^ Цепь Задержки (Delay Chain) представляется собой список транзактов, которые были помещены в неё из-за того, что операторы SEIZE или PREEMPT не приняли их, например, из-за низкого приоритета (в это время был взят на обслуживание транзакт с более высоким приоритетом). Помещённые в Цепь Задержки транзакты будут ожидать своей очереди на обслуживание. Возможность их обслуживания проверяется после освобождения Обслуживающего Устройства от обслуженного транзакта и из них выбирается тот, который обладает на момент выбора наибольшим приоритетом. Цепь Задержки — наиболее часто используемая программой, так как она присуща каждому Обслуживающему Устройству.

^ Цепь Повторений (Retry Chain) содержит список транзактов, которые были приостановлены в продвижении операторами GATE (Переместить в зависимости от состояния), TEST (Переместить в зависимости от сравнения), TRANSFER ALL (Переместить в новое место ВСЁ), TRANSFER BOTH (Переместить в новое место ОБА). Т. е. в Цепи Повторений сохраняются транзакты, перемещение которых обусловлено сравнением с каким-то условием, которое пока не выполнено. При последующих просмотрах последовательности операторов программа каждый раз проверяет выполнение этих условий и выбирает тот транзакт, для которого условие выполнилось, чтобы переместить его по назначению (в соответствии с оператором).

^ Цепь Прерываний (Interrupt Chain) содержит транзакты, которые выгружаются при входе в блок PREEMPT (Перехват: "Отстранить транзакт от обслуживания") транзакта с бóльшим приоритетом, чем активный транзакт, находящийся уже в Обслуживающем Устройстве. Новый транзакт "перехватывает" это Обслуживающее Устройство, а старый (недообслуженный) транзакт помещается в Цепь Прерываний. В последующем при возникновении благоприятных условий обслуживание этого транзакта может быть возобновлено. Цепь Прерываний и Цепь Повторений различаются тем, что в Цепи Прерываний содержатся невпущенные транзакты, а в Цепи Прерываний — принудительно выгруженные.

    1. ^ Окно логических ключей Logicswitches Window

Logicswitches Window — Окно Логических Ключей. Логические Ключи — специфические объекты GPSS, задаваемые специальным оператором LOGIC. Они бывают необходимы, чтобы выполнять некоторые условные операции. Транзакты могут переключать логические ключи в одно из двух состояний (0 или 1). В любом другом месте программы оператор может проанализировать состояние того или иного ключа и в зависимости от него выполнить то или иное действие. Например, может фиксироваться проход транзакта через какое-то Обслуживающее Устройство в середине программы и на основании этого приниматься решение в конце программы.

Окно Логических Ключей может быть как в развёрнутой (4), так и в компактной форме (4).



  1.  – ^ Окно Логических Ключей Logicswitches Window
    в развёрнутой форме


В развёрнутой форме Окно Логических Ключей содержит таблицу с 3 колонками и количеством строк, равным количеству Логических Ключей. В первой колонке указывается имя Логического Ключа, заданное в программе. Во второй колонке — его значение (1 или 0). В третье колонке указывается количество транзактов в цепи повторений Retry Chain, связанной с Логическими Ключами.

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



  1.  – ^ Окно Логических Ключей Logicswitches Window
    в компактной форме


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

    1. ^ Окно матриц Matrix Window

Matrix Window — окно Матриц. Матрицы — разновидности устройств в GPSS.

    1. Окно графиков Plot Window

Plot Window — окно графиков. Предназначено для визуализации результатов моделирования. Графики имеют стандартный вид ().

    1. ^ Окно очередей Queues Window

Queues Window — окно очередей. Очереди — разновидность устройств в GPSS. Очереди возникают, если устройство обслуживания Facilities не готово принять транзакт по каким-то причинам (занято, у транзакта не тот приоритет и др.). Очереди в программе могут быть или не быть заданы — не зависимо от того, имеются ли они в действительности. Задание имени очереди означает, что в процессе моделирования для неё начинает накапливаться информация, которую и можно посмотреть в окне очередей.



  1.  – ^ Окно Очередей Queues Window

Окно Очередей (4) представляет собой таблицу, в первом столбце которой перечислены названия очередей, включённых в программу на GPSS. Другие столбцы имеют следующее содержание:

"Current Content" — текущее содержание (число транзактов, находящихся в данный момент в данной очереди).

"Entry Count" — число входов (общее число входов транзактов с момента начала моделирования).

"Zero Entry Count" — число "нулевых" входов (число транзактов, которые вошли в очередь, но не задержались в ней по разным причинам и тотчас прошли на выход; это может происходить из-за отсутствия в очереди транзактов, из-за высокого приоритета вошедшего транзакта).

"Maximum Content" — наибольшая величина (наибольшее число транзактов, которые одновременно были в очереди).

"Average Content" — среднее количество (средняя величина количества транзактов в очереди за время моделирования).

"Average Time (+)" — среднее время ожидания транзакта в очереди.

"Average Time (–)" — среднее время ожидания транзакта в очереди.

"Retry Chain" — наличие (и их количество) транзактов в Цепи Повторений (если имеются транзакты, которые не могут войти в очередь, например, из-за того, что она заполнена, они ожидают такой возможности в Цепи Повторений).

    1. ^ Окно сохраняемых величин Savevalues Window

Savevalues Window — окно сохраняемых величин. В процессе моделирования переменные модели меняют свои значения. Некоторые переменные относятся к определённым классам (очереди Queue, одноканальные устройства обслуживания Facilities, многоканальные устройства обслуживания Storage) и для них уже предусмотрены окна представления результатов моделирования. Но в программе могут быть и другие переменные, значения которых могут интересовать пользователя модели. Тогда необходимо значения этих переменных сохранять, чтобы затем построить графики или вывести статистически обработанные значения (среднее, максимальное и др.). Именно эти переменные и появляются в окне Savevalues Window.


    1. ^ Окно многоканальных устройств обслуживания Storages Window

Storages Window — окно Накопителей. Накопители — это многоканальные устройства обслуживания, у которых все каналы идентичные. Вместо них можно использовать соответствующее количество одноканальных устройств, но, во-первых, при большом количестве каналов (десятки, сотни, тысячи) получится необозримая программа; во-вторых, чтобы собирать и обрабатывать информацию в этих каналах, придётся писать дополнительные фрагменты программы большого размера. Поэтому для многоканальных обслуживающих устройств Накопителей используется специальный оператор STORAGE. Если в программе такие операторы отсутствуют, то окно Накопителей будет пусто. Если они есть, то в окне Накопителей появится таблица. В первой колонке содержится список Накопителей из программы, а рядом с ним — некоторая информация.

    1. Окно гистограмм Table Window

Table Window — окно гистограмм.


    1. ^ Стандартный Отчёт REPORT

REPORT — Стандартный Отчёт является тем документом, в котором накапливаются основные результаты моделирования. Он позволяет получить полное представление о том, чем завершилось моделирование, содержит максимальные и средние значения различных переменных и др. Рассмотренные выше Окна позволяют детализировать информацию, имеющуюся в Стандартном Отчёте и визуализировать её, но этой информации обычно самой по себе достаточно, чтобы делать выводы о результатах моделирования.

Вид Стандартного Отчёта может настраиваться пользователем в зависимости от программы с помощью специального окна настройки Стандартного Отчёта: Edit → Settings → Report. Тогда открывается окно настройки Стандартного Отчёта (4).



  1.  – ^ Окно настройки Стандартного Отчёта REPORT

Присутствующие на вкладке настраиваемые параметры имеют следующее значение:

Blocks — блоки (выводить названия блоков и соответствующую им статистику);

Queues — очереди (выводить названия очередей и соответствующую им статистику — очереди есть не во всякой программе и выводить их не всегда надо);

Tables — таблицы (выводить названия таблиц и соответствующую им статистику — таблицы используются для накапливания данных в процессе моделирования и построения в последующем гистограмм, они не всегда присутствуют в программе и поэтому загромождать ими Стандартный Отчёт при их отсутствии не нужно);

^ Names — имена (вывод имён всех переменных программы и соответствующих им значений);

XN Groups — XN-группы (при наличии групп транзактов можно вывести значение отдельных транзактов из этих групп);

Num Groups — числовые группы (при наличии числовых групп можно вывести имена этих групп и соответствующую им статистику);

Facilities — Обслуживающие Устройства (есть в любой реальной программе);

Storages — Накопители (многоканальные Обслуживающие Устройства — есть не во всех программах);

^ CEC (Current Events Chain = 'kΛrənt ı'vent t∫eın) — Цепь Текущих Событий

FEC (Future Events Chain = 'fju:t∫ə ı'vents t∫eın) — Цепь Будущих Событий

Six Places — шесть знаков (точность действительных значений). При отсутствии флажка точность — три знака.

Procedures — процедуры (информация об использованных процедурах, вводимых программистом);

Savevalues — значения Сохраняемых Величин (сохраняемые величины — обычные переменные, которые записываются в память и могут использоваться затем в программе; они отличаются от других объектов GPSS — блоков, Обслуживающих Устройств, Накопителей, Очередей, которые не являются переменными, а некими объектами, содержащими много параметров; Сохраняемые Величины имеются не во всех программах, в случае их наличия выводится таблица с перечнем Сохраняемых Величин и их значениями на момент конца моделирования);

Logicswitches — Логические Ключи (есть не во всех программах; при их наличии выводится список Логических Ключей и их значения (0 – выключен или 1 – включен) на момент окончания моделирования);

Userchain — Цепь Пользователя (приводится информация о наличии транзактов в Цепи Пользователя, в которую транзакты помещаются принудительно при программировании при выполнении определённых условий);

Matrices — матрицы (есть не во всех программах);

Scientific — научный (представление чисел с мантиссой в виде десятичной экспоненты)

Experiments — эксперименты.

Внешний вид Стандартного Отчёта приведён на серии рисунков (4 — 4). Стандартный Отчёт обычно имеет сравнительно большие размеры и не вмещается в окно экрана.



  1.  — ^ Стандартный Отчёт. Начало. Часть 1

В первой строке начальной части Стандартного Отчёта (4) приводится название использованной программы (GPSS World), окна (Simulation Report) и моделированной программы (Sample9-Rus.1.1). В последнем случае имеется ввиду программа Sample9-Rus.gps.

Во второй строке — дата и время моделирования (Saturday, May 08, 2004 00:36:40).

Ниже приводятся таблицы с различными данными.

Первой идёт таблица с наиболее общими данными о программе и закончившемся процессе моделирования:

START TIME —время начала сеанса моделирования (в данном случае, как это часто и бывает, оно равно 0, но в случае нескольких последовательных сеансов моделирования может быть и другим);

END TIME — время окончания сеанса моделирования (в данном случае 10684,478 единиц внутреннего модельного времени — физический смысл его для каждой программы — свой);

BLOCKS — количество блоков в программе (в данном случае их 32);

FACILITIES — количество Обслуживающих Устройств в программе (в данном случае их 3);

STORAGES — количество Накопителей (многоканальных Обслуживающих Устройств — в данном случае 1).

Второй расположена таблица имён (блоков, Обслуживающих Устройств, Накопителей, Очередей) с их значениями на момент окончания моделирования.



  1.  — ^ Стандартный Отчёт. Продолжение. Часть 2

Во второй части окна Стандартного Отчёта (4) приведена таблица, отражающая структуру программы. При этом указываются метки (LABEL; в данном случае их две — NXTBLK и FINIS), номера блоков (LOC; нумерация их, выполняется автоматически интерпретатором GPSS — на эти номера можно ссылаться в программе: в данном случае их 32), имена всех блоков (BLOCK TYPE), количество вошедших в эти блоки транзактов (ENTRY COUNT), количество имеющихся в данный момент в блоках транзактов (CURRENT COUNT), повторные входы транзактов в каждый блок (RETRY).



  1.  — ^ Стандартный Отчёт. Продолжение. Часть 3

В третьей части окна Стандартного Отчёта (4) имеется 4 таблицы:

для Обслуживающих Устройств (FACILITY, в программе было 3 Обслуживающих Устройства c именами FACILITY1, FACILITY2 и FACILITY3),

для Очередей (QUEUE, в программе было 2 очереди с именами TOT_PROCESS и PROCESS_TIME),

для Накопителей (иначе — многоканальных Обслуживающих Устройств STORAGE, в программе был 1 Накопитель с именем POOL),

для таблиц (TABLE, в программе была 1 таблица с именем TRANSIT).

Для каждого типа устройств имеется свой набор выводимых параметров по столбцам.

Для Обслуживающих устройств FACILITY это:

ENTRIES — число входов транзактов в Обслуживающее Устройство;

UTIL. — коэффициент использования, равный отношению времени работы Обслуживающего Устройства (при обслуживании транзактов) к общему времени моделирования;

AVE. TIME — среднее время обслуживания транзактов;

AVAIL. — доступность устройства для транзактов на момент вывода Стандартного Отчёта;

OWNER — число захватов транзактами Обслуживающего Устройства (в данном случае оно равно числу входов);

PEND —

INTER —

RETRY —

DELAY —



  1.  — Стандартный Отчёт. Продолжение



6. Системные Числовые Атрибуты
(System Numerical Attributes)


6.1. Назначение Системных Числовых Атрибутов

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

Их использование обусловлено тем, что в GPSS наряду с обычными переменными используются такие специфические объекты как Обслуживающие Устройства, Очереди, Накопители, Цепи Событий. Они имеют по несколько характеризующих их атрибутов (переменных). Например, Очередь характеризуется числом вошедших, находящихся в неё и вышедших транзактов, некоторыми статистическими величинами и др. Эти переменные рассчитываются при моделировании и сохраняются внутри программы-интерпретатора. Чтобы получить доступ к ним, используются СЧА.

СЧА делятся на различные классы: СЧА Устройств, СЧА Обрабатывающих Устройств, СЧА общесистемные и др. Вид СЧА и порядок их использования показан ниже.

^ 6.2. Системные Числовые Атрибуты
(SNA Entity Specifiers)


Большинство СЧА должны быть представлены в одной из нескольких форм, начинающихся с наименования СЧА-класса. Например, выражение W22 при вызове возвращает номер транзакта, находящегося в блоке № 22. Этот номер задаётся при написании программы. СЧА-класс задаётся буквой W.

Эти СЧА могут быть записаны в следующих формах:

^ Wj — где j — положительное целое число (номер блока в моделировании).

W$Name — где Name  — название (обозначение) запрошенного блока.

W*j — где j  — положительное целое число — номер параметра активного транзакта, содержащее номер запрашиваемого блока (косвенная адресация).

W*Name — где Name — название параметра активного транзакта, содержащего номер запрашиваемого блока (косвенная адресация).

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

W*Parameter — означает, что тот или иной вид записи W*j, W*Name, или W*$Name может быть использован.

Класс СЧА MX для Матричных Устройств является особым случаем. Он содержит 3 косвенных адреса.

Например, выражение MX*Sales(*Partnumber,*January)определяет Матричное Устройство, чей номер находится в параметре с названием Sales (активного транзакта) и обращается к элементу матрицы, имеющему номер строки Partnumber и номер столбца January. Обычно для инициализации параметров (в данном случае Sales, *Partnumber и *January) у активного в данный момент транзакта используется блок ASSIGN.

СЧА-классы A1, AC1, C1, M1, MP, PR и TG1 не имеют параметров и используются сами по себе.

При программировании в GPSSW можно использовать подсказку о возможных формах использования СЧА в качестве операндов.

^ 6.3. Доступные системные числовые атрибуты

Следующие СЧА могут быть использованы в качестве операндов в операторах (командах) и в выражениях. Во всех случаях Entnum заменяется спецификатором устройства, который может быть именем (располагается справа вплотную от разделителя $) или номером, или (для косвенной адресации) он может быть заменён на символ *, за которым следует имя или номер.

Ниже приведён полный список СЧА в GPSS World:

A1 — Номер ансамбля активного транзакта (целое число). Ансамбль появляется, когда в системе находятся родственные транзакты, полученные, например, с помощью создателя копий одного из транзактов оператором SPLIT.

AC1 — Значение абсолютного времени моделирования — начиная с использования последней команды ^ CLEAR (действительное число), а при её отсутствии — с момента начала моделирования. Моделирование может прерываться (командами HALT, в связи с окончанием заданного времени и по другим причинам), а затем продолжаться. Абсолютное время показывает всё время моделирования.

^ BVEntnum — Значение булевой (логической) переменной с именем или номером Entnum (действительное число).

C1 — Значение относительного системного времени моделирования с момента последнего использования команды RESET (действительное число).

^ CAEntnum  — Среднее число транзактов в Цепи Пользователя с названием Entnum (действительное число).

CCEntnum — Общее число входов в Цепь Пользователя с именем Entnum (целое число).

CHEntnum — Текущее значение числа транзактов в Цепи Пользователя с именем Entnum (целое число).

CMEntnum — Максимальное число транзактов в Цепи Пользователя с именем Entnum (целое число).

CTEntnum — Среднее время нахождения транзактов в Цепи Пользователя с именем Entnum (действительное число).

FEntnum — Флаг занятости Обслуживающего Устройства. Если Обслуживающее Устройство с именем ^ Entnum в настоящее время занято, FEntnum возвращает 1, в противном случае возвращается 0 (целое число).

FCEntnum — Число захватов Обслуживающего Устройства с именем Entnum с помощью команд SEIZE или PREEMPT (целое число).

FIEntnum — Флаг прерывания Обслуживающего Устройства. Если Обслуживающее Устройство с именем ^ Entnum в настоящее время перехвачено (транзактом с более высоким приоритетом), FIEntnum возвращает 1, иначе возвращается 0 (целое число).

FNEntnum — Функция. Возвращает результат выполнения функции с именем Entnum (действительное число).

FREntnum — Коэффициент использования Обслуживающего Устройства, равный отношению времени занятости транзактами Обслуживающего Устройства с именем Entnum. к общему времени моделирования (действительное число).

FTEntnum  — Среднее время удержания транзактом Обслуживающего Устройства с именем ^ Entnum (действительное число).

FVEntnum  — Флаг готовности Обслуживающего Устройства. Если Обслуживающее устройство с именем Entnum готово принять очередной транзакт, то FVEntnum возвращает 1, если не готово — возвращается 0 (целое число).

^ GNEntum — Счётчик Цифровой Группы. GNEntnum возвращает количество членов Цифровой Группы с именем Entnum (целое число).

GTEntnum — Счётчик Группы Транзактов. GTEntnum возвращает количество членов Группы Транзактов с именем Entnum (целое число).

LSEntnum — Уставка Логического Ключа с именем Entnum. LSEntnum возвращает 1 или 0 (целое число). Логические Ключи — это переменные, которые используются в программе для запоминания какого-то события и выстраивания логики работы программы. Например, можно с помощью Логического Ключа фиксировать включенность или выключенность какого-то устройства. Логических Ключей может быть много и поэтому они имеют свои уникальные имена.

^ MBEntnum — Проверка принадлежности транзакта в блоке с именем Entnum и активного транзакта одному ансамблю. MBEntnum возвращает 1, если оба транзакта принадлежат одному ансамблю (целое число). Ансамбли нужны, например, при моделировании сборки сложного устройства из совокупности деталей. Может моделироваться сборка нескольких устройств и тогда будут существовать несколько ансамблей. Чтобы не перепутать детали, их проверяют на предназначенность соответствующему устройству.

MPParameter — Время перехода: текущее абсолютное системное время минус значение параметра с именем Parameter (действительное число).

MX^ Entnum(m,n) — Сохраняемое значение Матричного Устройства. Возвращает значение элемента матрицы в строке m и столбце n матричного устройства Entnum.

M1 — Время перехода. M1 возвращает абсолютное системное время минус "Временная Метка" транзакта (действительное число).

^ NEntnum — Счётчик входов в блок. Сообщает общее число входов транзактов в блок с именем Entnum (целое число).

PParameter или *Parameter — Значение параметра с именем Parameter активного транзакта (целое или действительное числа, строка). При косвенной адресации используют форму SNA*Parameter.

^ PR — Приоритет активного транзакта (целое число в диапазоне 0…127).

QEntnum — Текущее число транзактов в Очереди с именем Entnum (целое число).

QAEntnum — Среднее число транзактов в Очереди с именем Entnum за время моделирования (действительное число).

QCEntnum — Общее число входов транзактов в Очередь с именем Entnum (целое число).

QMEntnum — Максимальное число транзактов в Очереди с именем Entnum за время моделирования (целое число).

QTEntnum  — Среднее время нахождения транзактов в Очереди с именем ^ Entnum (действительное число).

QXEntnum — Среднее время нахождения транзактов в Очереди с именем Entnum, исключая "нулевые входы", когда транзакт входит в очередь и тут же её покидает, не теряя на это время (действительное число).

QZEntnum  — Число "нулевых входов" транзактов в Очередь с именем Entnum, когда транзакты проходят очередь не задерживаясь (целое число).

^ REntnum — Размер незанятой ёмкости Накопителя с именем Entnum (целое число).

RNEntnum — Случайное число. RNEntnum возвращает числа в диапазоне 0…999 генератора случайных чисел с именем (номером) ^ Entnum (целое число).

SEntnum — Количество транзактов, находящихся в данный момент в Накопителе с именем Entnum. SEntnum возвращает число транзактов, вошедших в Накопитель с именем Entnum (целое число).

SAEntnum — Среднее значение использованной ёмкости Накопителя с именем Entnum (действительное число).

SCEntnum — Число использований транзактами Накопителя с именем Entnum (целое число).

SEEntnum — Незанятость Накопителя. SEEntnum возвращает 1, если Накопитель с именем Entnum полностью доступен, возвращает 0 в ином случае (целое число).

^ SFEntnum — Заполненность накопителя. SFEntnum возвращает 1, если Накопитель с именем Entnum полностью заполнен, возвращает 0 в ином случае (целое число).

SREntnum — Коэффициент использования Накопителя. Отношение среднего числа использований Накопителя ^ Entnum к общей его ёмкости (действительное число в диапазоне 0…1000).

SMEntnum — Максимальное значение использования Накопителя с именем Entnum (целое число).

STEntnum — Среднее время удержания на единицу Накопителя с именем Entnum (действительное число).

SVEntnum — Готовность Накопителя. SVEntnum возвращает 1, если Накопитель с именем Entnum в состоянии готовности, возвращает 0 в ином случае (целое число).

TBEntnum — Nonweighted average of entries in Table Entity Entnum. (действительное число).

TCEntnum — Count of nonweighted table entries in Table Entity Entnum. (целое число).

TDEntnum — Стандартное отклонение of nonweighted table entries in Table Entity Entnum. (действительное число).

TG1 — Число, записанное в Счётчике Завершений. TG1 возвращает число, которое остаётся после работы блока TERMINATE с положительным операндом A. Это значение первоначально задаётся командой START и для продолжения моделирования должно быть больше 0 (целое число).

VEntnum — Результат вычисления арифметической или с плавающей точкой переменной с именем ^ Entnum (действительное число).

WEntnum — Текущее (на данный момент) число транзактов в блоке с именем Entnum. (целое число).

XEntnum — Значение Сохраняемой Переменной с именем Entnum (целое или действительное числа, строка).

XN1 — Номер активного транзакта (целое число).

Z1 — Размер свободной оперативной памяти компьютера (целое число).


^ Литература по GPSS

Емельянов, А. А. Имитационное моделирование экономических процессов: учеб. пособие / А. А. Емельянов, Е. А. Власова, Р. В. Дума; Под ред. А. А. Емельянова. — М.: Финансы и статистика, 2002. — 368 с. — ISBN 5-279-02572-0.

Кельтон, В. Имитационное моделирование. Классика CS. — 3-е изд. / В. Кельтон, А. Лоу. — СПб.: Питер; Киев: Издательская группа BHV, 2004. — 847 с. — ISBN 5-94723-981-7; ISBN 966-552-118-7.

Кудрявцев, Е. М. GPSS World. Основы имитационного моделирования различных систем / Е. М. Кудрявцев. — М.: ДМК Пресс, 2004. — 320 с. — (Серия "Проектирование"). — ISBN 5-94074-219-X.

Нейлор, Т. Машинные имитационные эксперименты с моделями экономических систем / Т. Нейлор. — М.: Мир, 1975. — 392 с.

Томашевский, В. Н. Имитационное моделирование в среде GPSS / В. Н. Томашевский, Е. Г. Жданова. — М.: Бестселлер, 2003. — 416 с. — ISBN 5-98158-004-6.

Фомин, Г. П. Системы и модели массового обслуживания в коммерческой деятельности: учеб. пособие / Г. П. Фомин. — М.: Финансы и статистика, 2000. — 144 с. — ISBN 5-279-02307-8

Шеннон, Р. Е. Имитационное моделирование систем: наука и искусство / Р. Е. Шеннон. — М.: Мир, 1978. — 420 с.

Шмидт, Б. Искусство моделирования и имитации. Введение в имитационную систему Simpex 3 / Б. Шмидт; перевод на русский язык и научное редактирование д. т. н., проф. Ю. А. Ивашкина и д. т. н., проф. В. Л. Конюха. — Дельфт; Эрланген; Гент; Сан-Диего: Международное общество моделирования и имитации SCS. Европейское изд-во, 2003. — [463 с.]

Шрайбер, Т. Дж. Моделирование на GPSS / Т. Дж. Шрайбер. — М.: Машиностроение, 1979.– 592 с.




Скачать 412,25 Kb.
оставить комментарий
Дата02.12.2011
Размер412,25 Kb.
ТипПрограмма, Образовательные материалы
Добавить документ в свой блог или на сайт

плохо
  2
средне
  1
хорошо
  2
отлично
  3
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх