- •3.4. Сбор статистических данных для получения оценок характеристик случайных величин
- •3.5. Определение количества реализаций при моделировании случайных величин
- •Глава 4. Система моделирования gpss
- •4.1. Объекты
- •4.2. Часы модельного времени
- •4.3. Типы операторов
- •4.4. Внесение транзактов в модель. Блок gеnеrате
- •4.5. Удаление транзактов из модели. Блок terminate
- •4.6. Элементы, отображающие одноканальные обслуживающие устройства
- •4.7. Реализация задержки во времени. Блок аdvance
- •4.8. Сбор статистики об ожидании. Блоки queue, depart
- •4.9. Переход транзакта в блок, отличный от последующего. Блок transfer
- •4.10. Моделирование многоканальных устройств
- •4.11. Примеры построения gpss-моделей
- •4.12. Переменные
- •4.13. Определение функции в gpss
- •4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки аssign, маrк, lоор
- •4.15. Изменение приоритета транзактов. Блок рriority
- •4.16. Организация обслуживания с прерыванием. Блоки рrеемрт и return
- •4.17. Сохраняемые величины
- •4.18. Проверка числовых выражений. Блок теsт
- •4.20. Косвенная адресация
- •4.21. Обработка транзактов, принадлежащих одному семейству
- •4.22. Управление процессом моделирования в системе gpss
- •4.23. Списки пользователей
- •Блоки управления потоками транзактов
4.18. Проверка числовых выражений. Блок теsт
Сравнение СЧА может быть выполнено с помощью блока ТЕSТ (ПРОВЕРИТЬ).
Его формат:
ТЕSТ Х А,В[,С]
Таблица 4.43
|
Операнд |
Значение |
Результат по умолчанию |
|
А |
СЧА |
Ошибка |
|
В |
СЧА |
Ошибка |
|
С |
Имя блока, в который переходит транзакт при условии, что ответ на вопрос, подразумеваемый оператором отношения, отрицательный |
При отсутствии операнда С проверку выполняют в режиме отказа |
|
Х |
Вспомогательный оператор, который представляет собой оператор отношения, использующийся при проверке |
|
|
|
Значение оператора отношения: |
Вопрос оператора отношения: |
|
|
G |
А больше В? |
|
|
GЕ |
А больше или равно В? |
|
|
Е |
А равно В? |
|
|
NЕ |
А не равно В? |
|
|
LЕ |
А меньше или равно В? |
|
|
L |
А меньше В? |
Операнды А и В – имена СЧА, которые сравниваются. Вспомогательный оператор Х указывает способ сравнения этих двух СЧА друг с другом.
Пример 4.40
Режим отказа
ТЕSТ LЕ Q1,Q2
Проверяющий транзакт будет задержан в предыдущем блоке до тех пор, пока длина первой очереди не станет меньше или равна длине второй очереди.
Пример 4.41
Режим условного перехода
ТЕSТ LЕ Q1,Q2,ZНVS
Проверяющий транзакт перейдет в следующий по порядку блок, если содержимое первой очереди меньше или равно содержимому второй очереди. Если это условие не выполняется, транзакт перейдет в блок с меткой ZHVS.
Пример 4.42
ТЕSТ L F$SСАNNЕR,X$МАX_UТIL,LLL
SЕIZE SСАNNЕR
…
LLL QUEUE Q_SСАNNЕR2
Если устройство SСАNNЕR имеет коэффициент загрузки меньше, чем значение сохраняемой величины МАХ_UТIL, то транзакт идет на обслуживание этим устройством, в противном случае – переходит к блоку с меткой LLL.
Пример 4.43
Пусть в точке модели DISРАТСНЕR необходимо удалить те транзакты, которые находились в модели больше, чем 100 ед. модельного времени. Для этого в модели можно использовать такие блоки:
GЕNЕRАТЕ 18,6
…
DISРАТСНЕR ТЕSТ L М1,100,КILL
…
КILL ТЕRMINATE
4.20. Косвенная адресация
Ранее были рассмотрены прямые способы адресации, когда:
1) номер объекта задается константой
QUEUE 2 ;Стать в очередь 2
…
SЕIZE 1 1 ;Занять устройство 1
2) номер объекта задается СЧА
LЕАVЕ Р1 ; Освободить МКУ с номером, задаваемым параметром 1
Адресация может быть относительной и по отношению к самому блоку. Это осуществляется при помощи записи *+/– п. Например,
ТRАNSFЕR ,*+2
В этом случае сам блок ТRАNSFЕR является ориентировочным блоком. Транзакт пытается войти во второй, относительно блока ТRАNSFЕR, блок.
Подобные ссылки не зависят от свойств транзакта, обрабатываемого в данный момент времени. Использование прямой адресации может привести к введению большого числа дополнительных блоков только для того, чтобы записать номера объектов в СЧА, т.е. к увеличению объема модели. Существенным образом сократить объем модели и использовать зависимость номеров объектов от свойств транзактов позволяет косвенная адресация.
Общий формат косвенной адресации:
СЧА*СЧАj или СЧА*СЧА<имя>
Там, где допустимо использование СЧА, обычно могут использоваться и СЧА*СЧА.
При использовании косвенной адресации параметр Р может опускаться.
Пример 4.46
SЕIZE Р*Х1
Занять устройство, номер которого содержится в параметре транзакта, а номер параметра определяется значением ячейки X1.
SАVЕVALUE 1,Х*Р2
Поместить в ячейку с номером 1 значение, содержащееся в ячейке, номер которой определяется параметром 2.
Пример 4.47
4 FUNCTION RN1,DЗ ;Функция распределения типов сообщений 0.2,1/0.5,2/0.999999,3
1 FUNCTION RN2,С20 ;Функция распределения числа символов
; сообщения типа 1
…
2 FUNCTION RNЗ,С20 ;Функция распределения числа символов
; сообщения типа 2
…
3 FUNCTION RN4,С20 ;Функция распределения числа символов
; сообщения типа 3
…
GЕNЕRАТЕ 100,10
АSSIGN 1,FN4 ; Определение типа сообщения
АSSIGN 2,FN*Р1 ; Определение числа символов сообщения
…
В данной модели предполагается, что через некоторый узел сети проходят информационные сообщения трех типов, причем каждый из них характеризуется своим распределением числа символов. В модели первый параметр транзакта содержит тип сообщения, а второй параметр – число символов сообщения.
При использовании косвенной адресации при обращении к устройствам, МКУ или функциям через параметры приходится применять числовые значения имен. Транслятор ОР58/РС на этапе компиляции сам присваивает именам числовые значения, однако, при этом пользователь не контролирует такое присвоение. Для того, чтобы не возникали конфликты между числовыми значениями имен, присвоенных транслятором, и именами, заданных пользователем, необходимо использовать простое правило в модели использовать имена либо только числовые, либо только символьные.
Назначение именам числовых значений осуществляется с помо щью оператора ЕQU (аналог #define в языке программирования Си).
Пример 4.48
Необходимо занять МКУ, номер которого определяется в пер-| вом параметре транзакта. По логике функционирования модели занимается один из двух МКУ: SECTION_А или SЕСТION_В.
SЕСТION_А ЕQU 1
SЕСТION_В ЕQU 2
SЕСТION_А SТОRАGЕ 2
SЕСТION_В SТОRАGЕ 3
…
АSSIGN 1,1
…
АSSIGN 1,2
…
ЕNТЕR Р1
…
