- •1. Общие сведения
- •1.1. Варианты заданий
- •1.2. Краткие сведения о системах массового обслуживания
- •1.2.1. Основные понятия смо
- •1.2.2. Элементы процедуры решения
- •2. Описание концептуальной модели
- •3. Блок-диаграмма в пакете gpss
- •4. Общие сведения о gpss/pc
- •4.1 Блоки и транзакты
- •4.2. Часы модельного времени
- •4.3. Типы операторов
- •4.4. Внесение транзактов в модель. Блок generate
- •Generate [a],[b],[c],[d],[e]
- •4.5. Удаление транзактов из модели. Блок terminate
- •Terminate [a]
- •Start a,[b],[c],[d]
- •4.6. Элементы, отображающие одноканальные обслуживающие устройства
- •Seize a
- •Release a
- •4.7. Реализация задержки во времени. Блок advance
- •Advance a[,b]
- •4.8. Переход транзакта в блок, отличный от последующего. Блок transfer
- •Transfer ,b
- •Transfer a,[b],c
- •4.9. Моделирование многоканальных устройств
- •4.10. Переменные
- •4.11. Определение функции в gpss
- •Advance vshyp
- •Advance vsnor1
- •Generate (Exponential(1,0,(1/0.25)))
- •Lognormal(Stream, Locate, Scale, Shape),
- •Gamma (Stream, Locate, Scale, Shape),
- •Weibull (Stream, Locate, Scale, Shape),
- •4.12. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop
- •Mark a
- •Loop a[,b]
- •4.13. Изменение приоритета транзактов. Блок priority
- •Priority a[,b]
- •4.14. Организация обслуживания с прерыванием. Блоки preempt и return
- •Preempt a,[b],[c],[d],[e]
- •Return a
- •4.15. Сохраняемые величины
- •4.16. Проверка числовых выражений. Блок test
- •Test X а,в[,с]
- •4.17. Определение и использование таблиц
- •Tabulate a
- •4.18. Косвенная адресация
- •4.19. Обработка транзактов, принадлежащих одному семейству
- •Split a,[b],c]
- •Match a
- •Assemble a
- •Gather a
- •4.20. Основные сокращения и обозначения симулятора gpss
- •5. Содержание пояснительной записки и требования к ее оформлению
- •Список литературы
Tabulate a
Табл. 32. Значения операндов
Операнд |
Значение |
Результат по умолчанию |
А |
Имя (символьное или числовое) таблицы, в которой табулируется соответствующий СЧА |
Ошибка |
Операнд А задает имя таблицы, в которую попадают выборочные значения. Одну таблицу можно использовать в нескольких блоках TABULATE модели. Отметим, что СЧА, по которому собирается статистика, в блоке TABULATE не указывается, так как он уже записан в операторе TABLE.
Стандартные числовые атрибуты таблицы:
ТВ<номер таблицы>, ТВ$<имя таблицы> - вычисленное среднее значение соответствующего СЧА;
ТС<номер таблицы>, ТС$<имя таблицы> - общее число входов в таблицу;
ТВ<номер таблицы>, ТВ$<имя таблицы> - вычисленное среднеквадратическое отклонение соответствующего СЧА.
4.18. Косвенная адресация
Ранее были рассмотрены прямые способы адресации, когда:
1) номер объекта задается константой
QUEUE 2 ; Стать в очередь 2
SEIZE 1 ; Занять устройство 1
2) номер объекта задается СЧА
LEAVE P1 ; Освободить МКУ с номером, задаваемым параметром 1
Адресация может быть относительной и по отношению к самому блоку. Это осуществляется при помощи записи *+/–n. Например,
TRANSFER ,*+2
В этом случае сам блок TRANSFER является ориентировочным блоком. Транзакт пытается войти во второй, относительно блока TRANSFER, блок.
Подобные ссылки не зависят от свойств транзакта, обрабатываемого в данный момент времени. Использование прямой адресации может привести к введению большого числа дополнительных блоков только для того, чтобы записать номера объектов в СЧА, т.е. к увеличению объема модели. Существенным образом сократить объем модели и использовать зависимость номеров объектов от свойств транзактов позволяет косвенная адресация.
Общий формат косвенной адресации:
C4A*C4Aj или СЧА*СЧА<имя>
Там, где допустимо использование СЧА, обычно могут использоваться и СЧА*СЧА.
При использовании косвенной адресации параметр Р может опускаться.
При использовании косвенной адресации при обращении к устройствам, МКУ или функциям через параметры приходится применять числовые значения имен. Транслятор GPSS/PC на этапе компиляции сам присваивает именам числовые значения, однако, при этом пользователь не контролирует такое присвоение. Для того, чтобы не возникали конфликты между числовыми значениями имен, присвоенных транслятором, и именами, заданных пользователем, необходимо использовать простое правило: в модели использовать имена либо только числовые, либо только символьные.
Назначение именам числовых значений осуществляется с помощью оператора EQU (аналог #define в языке программирования Си).
Косвенная адресация является мощным инструментом языка GPSS, позволяющим существенно сократить размер модели и во многих случаях уложиться в ограничения для бесплатно распространяемых студенческих версий языка GPSS (в модели должно быть до 150 блоков).
4.19. Обработка транзактов, принадлежащих одному семейству
Кроме блока GENERATE, для создания транзактов может использоваться блок SPLIT (РАЗДЕЛИТЬ), который выполняет функцию копирования транзакта, входящего в него. Этот транзакт называется начальным или порождающим. Все копии формируются в момент входа начального транзакта в блок SPLIT. Каждая новая копия становится членом семейства (ансамбля) транзактов, порожденных одним начальным транзактом, который был создан блоком GENERATE.
Блок имеет такой формат (значение операндов приведено в табл. 33):