4.12. Переменные
Общая характеристика переменных. При построении модели системы, иногда возникает необходимость задать сложные математические или логические соотношения между атрибутами системы. Для этой цели в программе используютсяпеременные.
В GPSSимеется три типа переменных:
1) арифметические переменные;
2) арифметические переменные c«плавающей точкой»;
3) булевы переменные.
Значение арифметических переменных может использоваться как:
1) операнд блока; в этом случае значение арифметической переменной может представлять собой:
– номер объекта (устройства, МКУ, очереди и т. п.);
– номер параметра транзакта;
– значение стандартного числового атрибута;
3) операнд А функции;
4) операнд А таблицы;
5) операнд выражения другой переменной.
В выражениях арифметические переменные используют такие арифметические операции:
+ алгебраическое сложение;
– алгебраическое вычитание;
# алгебраическое умножение;
/ алгебраическое деление (результатом операции является целая часть частного);
@ деление по модулю;
^ возведение в степень;
\ деление без остатка (перед делением у обоих операндов отбрасываются дробные части, результатом операции есть целая часть частного).
Привычно используемый для умножения во многих языках знак «*», зарезервирован в GPSSдля обозначениякосвенной адресации, однако вGPSSWorldесть возможность в меню настройки параметров переопределить для умножения знак «*», А для косвенной адресации – «#». Косвенная адресация является мощным средством для построения компактных и гибких моделей. Ее идея заключается в том, что можно обратиться к любому объекту или СЧА через параметры транзактов. Доступ же к параметрам транзактов осуществляется через СЧАPj, гдеj – номер параметра транзакта (например, 10) илиР$имя, гдеимя – имя (идентификатор) параметра транзакта. Так как обращение к объекту возможно только через параметр транзакта, то символPможет опускаться. Например, выражениеQ*7 илиQ*P7 определяет текущее значение длины очереди, номер которой задан в параметре 7 транзакта. Если в седьмом параметре хранится значение 3, то это будет текущее значение длины очередиcномером 3.
В выражениях может быть задано любое число приведенных операций в различных комбинациях. Знак результата вычисляется по обычным алгебраическим правилам. Допускаются отрицательные значения переменных. Выражения анализируются слева направо. Возведение в степень, умножение, деление и деление по модулю выполняются раньше, чем сложение и вычитание.
Вычисленное значение переменной является ее стандартным числовым атрибутом.
Арифметические переменные. Арифметические переменные аналогичны арифметическим выражениям в алгоритмических языках. Переменная задается операторомVARIABLE, называемым оператором описания переменной, который содержит арифметическое выражение. Формат оператора описания переменной:
Таблица 4.19
Поле | Информация, задаваемая в поле |
Метка | \ Имя (числовое или символьное) переменной |
Операция | ] VARIABLE |
Операнд А | Выражение, которое используется для вычисления значения переменной |
При обращении к переменной используется обозначение V<номер переменной> или V$<имя переменной>, т.е.V – это СЧА переменной.
Пример 4.16
Оператор описания VARIABLE определяет арифметическую переменнуюRSL:
RSL VARIABLE QT$WAITL+3-FN$DSTRB#P7
При любом обращении к переменной RSL(употребляется обозначениеV$RSL) ее значение вычисляется как текущая длина очередиWAlTL (QT$WAITL – СЧА регистратора очереди) плюс константа 3 и минус произведение значения функцииDSTRB на значение параметра 7 транзакта, обрабатываемого в данный момент. В приведенном выраженииFN– СЧА для обращения к функции,aP– СЧА транзакта.
Перед выполнением любой арифметической операции определяется значение каждого элемента и выделяется его целая часть. Постоянные без знака считаются положительными числами.
В выражении арифметической переменной могут быть использованы любые СЧА, функции и другие арифметические переменные. Запрещается использование самой вычисляемой переменной, А также переменных со знаком, так как знаки в данном случае рассматриваются как арифметические операции.
Система моделирования GPSSдопускает использование скобок в выражениях арифметических переменных (для группировки членов или для обозначения операции умножения).
В GPSSWorldвыражения, записанные в круглых скобках, обрабатываются вычислительной процедурой встроенного алгоритмического языкаPLUS. Поэтому их можно использовать в качестве операндов блоков и операторов языкаGPSS. Например, выражение, описанное в примере 4.16, может быть использовано таким образом:
ADVANCE (QT$WAITL+3-FN$DSTRB#P7)
1.BGPSS/PCвыражение может содержать не больше пяти пар скобок (не считая скобок, используемых при описании элементов матриц).
2. Пробелы между символами в выражениях не допускаются. Левый пробел записи считается концом выражения. Для записи выражения, превышающего длину строки, можно ввести другой оператор VARIABLE cименем, отличным от имени первой переменной, и включить значение новой переменной в качестве одного из операндов в выражение первой арифметической переменной.
Пример 4.17
ADD VARIABLE P10+25
При обращении к арифметической переменной ADD ее значение вычисляется как сумма значений десятого параметра транзакта, обрабатываемого в данный момент, и константы 25.
Выражение для F1 содержит как операнды переменныеF2иF3.
PROFIT VARIABLE V*P*FN*P2
Переменная PROFIT будет вычислена следующим образом. Вначале определяется значение второго параметра текущего транзакта. Пусть в параметреP2 хранится значение 3. Затем вычисляется значение функции 3. Пусть оно равно 10. После этого определяется значение параметраcномером 10. Пусть содержимым этого параметра будет число 5. Тогда переменнойPROFIT присваивается значение переменной 5.
COMP VARIABLE X*P4/100
При обращении к арифметической переменной COMP ее значение вычисляется как частное от деления значения сохраняемой величины (СЧАX), номер которой определяется четвертым параметром транзакта, обрабатываемого в данный момент, на константу 100. Сохраняемые величины позволяют хранить значения глобальных переменных, доступных из любой части модели. Такой прием используется для выделения старших разрядов чисел. Например, пусть в четвертом параметре текущего транзакта записано число 6. И пусть в сохраняемой величине 6 хранится число 12345. При обращении к переменнойCOMP происходит следующее:
1) определение значения параметра 4 (получаем число 6);
2)определение значения 12345, которое хранится в ячейке X*P4, т.е. в ячейке 6;
З)значение 12345 делится на 100 (cотбрасыванием остатка), в результате получается 123.
Арифметические переменные c плавающей точкой аналогичны рассмотренным арифметическим переменным, за исключением того, что все операции над операндами выражений переменныхcплавающей точкой выполняются без преобразования операндов и промежуточных результатов в целые значения. Лишь окончательный результат вычисления преобразуется в целое число.
Формат операторов описания арифметических переменных cплавающей точкой идентичен рассмотренному выше формату операндов описания арифметических переменных за исключением того, что в поле операции записывается словоFVARIABLE. Правила написания операторов те же, что и для арифметических переменных. Арифметическая переменная и переменнаяcплавающей точкой не могут иметь одинаковые номера. Если они имеют одинаковые номера, то при вычислении используется более позднее из двух описаний.
Различие результатов, полученных при вычислении cплавающей точкой и фиксированной, можно увидеть из такого примера:
FLOAT FVARIABLE 10#(ll/3)
FIXED VARIABLE 10#(ll/3)
Значение переменной FLOAT равно 36, так как константа 10 умножается на 3,67 и от результата 36,7 взята целая часть. ПеременнаяFIXED равна 30, так как результат промежуточной операции деления будет округлен до 3.
1. Для переменных cплавающей точкой не допускается операция деления по модулю.
2. Использование дробных констант допускается только при описании переменных cплавающей точкой.
З.Стандартный числовой атрибут V$<имя переменной> используется для обращения к значениям как арифметических переменных, так и переменныхcплавающей точкой. Способ вычисления переменной определяется оператором описания этой переменной.
Булевы переменные. Булевы переменные позволяют принимать решения в зависимости от значений СЧА и состояния объектовGPSS, используя для этого только одно выражение.
Булевы переменные – это логические выражения, состоящие из различных СЧА и (или) других булевых переменных. В булевой переменной проверяется одно или несколько логических условий. Результатом проверки есть единица (истина), если условия выполняются, и ноль(ложь) – в противном случае.
При описании булевых переменных используются три типа операторов: логические, булевы и операторы отношений.
Логические операторы связаныcтакими ресурсами, как устройства, МКУ и логические ключи. Они используются для определения состояния данных объектов. Логические операторы, используемые вGPSS, представлены в табл. 4.20
Таблица 4.20
Логические операторы | Значение оператора, отражающее состояние ресурса |
FVj или Fj | Равно 1, если устройство jзанято или обслуживает прерывание, в противном случае – 0 |
FNVj | Равно 1, если устройство j не занято и не обслуживает прерывание, в противном случае – 0 |
Ij | Равно 1, если устройство jобслуживает прерывание, в противном случае – 0 |
NIj | Равно 1, если устройство jне обслуживает прерывание, иначе – 0 |
NUj | Равно 1, если устройство jне используется, в противном случае – 0 |
UJ | Равно 1, если устройство jиспользуется, в противном случае – 0 |
SFJ | Равно 1, если многоканальное устройство у заполнено, иначе – 0 |
SNFj | Равно 1, если МКУ j не заполнено, иначе – 0 |
SEj | Равно 1, если МКУ jпусто, иначе – 0 |
SNEj | Равно 1, если МКУ jне пусто, иначе – 0 |
SVj | Равно 1, если МКУ jнаходится в состоянии использования, в противном случае – 0 |
SNVJ | Равно 1, если МКУ jне используется, в противном случае – 0 |
LRj | Равно 1, если логический ключ jвыключен, иначе – 0 |
LSj | Равно 1, если логический ключ j включен, иначе – 0 |
Операторы отношения выполняют алгебраическое сравнение операндов. Операндами могут быть константы или стандартные числовые атрибуты. Все операторы отношений записываются в кавычках:
"G" (Greater) – больше;
"L"(Less) – меньше;
"E" (Equal) – равно;
"NE" (Not Equal) – не равно;
"LE" (Less than or Equal) – меньше или равно;
"GE" (Greater than or Equal) – больше или равно;
Есть два булевых оператора: "OR" – оператор «или», и "AND" – оператор «и». Оператор «или» проверяет, выполняется ли хотя бы одно из проверяемых условий. Оператор «и» требует выполнения обоих условий.
- Предисловие
- Введение
- Глава 1. Модели массового обслуживания
- 1.1. Системы массового обслуживания и их характеристики
- 1.2. Системыcодним устройством обслуживания
- 1.3. Основы дискретно-событийного моделированияCmo
- 1.4. Многоканальные системы массового обслуживания
- Переменная vаr1, экспоненциальное распределение
- Глава 2. Вероятностные сети систем массового обслуживания
- 2.1. Общие сведения о сетях
- 2.2. Операционный анализ вероятностных сетей
- 2.3. Операционные зависимости
- 2.4. Анализ узких мест в сети
- Глава 3. Вероятностное моделирование
- 3.1. Метод статистических испытаний
- 3.2. Моделирование дискретных случайных величин
- 3.3. Моделирование непрерывных случайных величин
- 3.4. Сбор статистических данных для получения оценок характеристик случайных величин
- 3.5. Определение количества реализаций при моделировании случайных величин
- Глава 4. Система моделированияgpss
- 4.1. Объекты
- 4.2. Часы модельного времени
- 4.3. Типы операторов
- 4.4. Внесение транзактов в модель. БлокGenerate
- 4.5. Удаление транзактов из модели. БлокTerminate
- 4.6. Элементы, отображающие одноканальные обслуживающие устройства
- 4.7. Реализация задержки во времени. БлокAdvance
- 4.8. Сбор статистики об ожидании. БлокиQueue,depart
- 4.9. Переход транзакта в блок, отличный от последующего. БлокTransfer
- 4.10. Моделирование многоканальных устройств
- 4.11. Примеры построенияGpss-моделей
- 4.12. Переменные
- 4.13. Определение функции вGpss
- 4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop
- Примеры фрагментов gpss-моделейcиспользованием сча и параметров гранзактов
- 4.15. Изменение приоритета транзактов. БлокPriority
- 4.16. Организация обслуживанияcпрерыванием. Блоки preempt и return
- 4.17. Сохраняемые величины
- 4.18. Проверка числовых выражений. БлокTest
- 4.19. Определение и использование таблиц
- 4.20. Косвенная адресация
- 4.21. Обработка транзактов, принадлежащих одному семейству
- 4.22. Управление процессом моделирования в системеGpss
- 4.23. Списки пользователей
- 4.24. Блоки управления потоками транзактовLogic,gatelr,gatelSиGate
- 4.25. Организация вывода временных рядов изGpss-модели
- 4.26. Краткая характеристика языкаPlus
- 4.27. КомандыGpssWorId
- 4.28. Диалоговые возможностиGpssWorld
- 4.29. Отличия междуGpssWorldиGpss/pc
- Глава 5. Моделирование вычислительных и операционных систем
- 5.1. Операционные системы компьютеров
- 5.2. Сети и системы передачи данных
- 5.3. Проблемы моделирования компьютеров и сетей
- Глава 6. Основы моделирования процессов
- 6.1. Производственные процессы
- 6.2. Распределительные процессы
- 6.3. Процессы обслуживания клиентов
- 6.4. Процессы управления разработками проектов
- Глава 7. Задания для самостоятельной работы Задание 1. Моделирование разливной линии
- Задание 2 [10]. Моделирование контроля и настройки телевизоров
- Задание 3. Моделирование работы кафе
- Задание 4. Моделирование работы обрабатывающего цеха
- Задание 5. Моделирование работы обрабатывающего цеха
- Задание 6. Моделирование работы обрабатывающего цеха
- Задание 7. Моделирование работыCmo
- Задание 8. Моделирование функций
- Задание 9 [10]. Моделирование системы обслуживания
- Задание 10 [16]. Моделирование системы автоматизации проектирования
- Задание 11 [16]. Моделирование работы транспортного цеха
- Задание 12 [16]. Моделирование системы передачи разговора
- Задание 13 [16]. Моделирование системы передачи данных
- Задание 14 [16]. Моделирование узла коммутации сообщений
- Задание 15 [16]. Моделирование процесса сборки
- Задание 16 [16]. Моделирование работы цеха
- Задание 17 [16]. Моделирование системы управления производством
- Задание 18. Моделирование производственного процесса
- Задание 19. Моделирование работы заправочной станции
- Задание 20. Моделированиеработы станции технического обслуживания
- Задание 21. Моделирование работы станции скорой помощи
- Задание 22. Моделирование работы госпиталя
- Задание 23. Моделирование работы маршрутных такси
- Задание 24. Моделирование работы печатной системы
- Задание 25. Моделирование процесса сборки пк
- Глава8. Проектирование имитационных моделей c помощью интерактивной системы имитационного моделирования
- 8.1. Структура интерактивной системы имитационного моделирования
- 8.2. Построение концептуальной схемы модели
- 8.3. Параметрическая настройка модели
- 8.4. Генератор формул
- 8.5. Управление экспериментом
- 8.6. Запуск эксперимента и обработка результатов моделирования
- 8.7. Управление проектами и общей настройкой системы
- 8.8. Пример построения модели средствамиIss2000
- Глава 9. Технология имитационного моделирования
- 9.1. Имитационные проекты
- 9.2. Организация экспериментов
- 9.3. Проблемы организации имитационных экспериментов
- 9.4. Оценка точности результатов моделирования
- 9.5. Факторный план
- 9.6. Дисперсионный анализAnovAв планировании экспериментов
- 9.7. Библиотечная процедураAnova
- 9.8. Технология проведение дисперсионного анализа в системеGpssWorld
- 9.9. Особенности планирования экспериментов
- 9.10. Нахождение экстремальных значений на поверхности отклика
- 9.11. Организация экспериментов вGpssWorId
- 9.L2. Выбор наилучшего варианта структуры системы
- Глава 10. Примеры принятия решенийcпомощью имитационного моделирования
- 10.1. Моделирование производственного участка
- 10.2. Моделирование технологического процесса ремонта и замены оборудования
- Приложение Системные сча
- Сча транзактов
- Сча блоков:
- Сча одноканальных устройств:
- Сча очередей
- Сча таблиц
- Сча ячеек и матриц ячеек сохраняемых величин:
- Сча вычислительных объектов
- Список литературы
- Срдержание
- Глава 5. Моделирование вычислительных и операционных систем 132
- Глава 10. Примеры принятия решений c помощью имитационного моделирования 201