- •Предисловие
- •Введение
- •Глава 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, gate lr, gate ls и gate
- •4.25. Организация вывода временных рядов из gpss-модели
- •4.26. Краткая характеристика языка plus
- •4.27. Команды gpss WorId
- •4.28. Диалоговые возможности gpss World
- •4.29. Отличия между gpss World и 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. Пример построения модели средствами iss 2000
- •Глава 9. Технология имитационного моделирования
- •9.1. Имитационные проекты
- •9.2. Организация экспериментов
- •9.3. Проблемы организации имитационных экспериментов
- •9.4. Оценка точности результатов моделирования
- •9.5. Факторный план
- •9.6. Дисперсионный анализ anova в планировании экспериментов
- •9.7. Библиотечная процедура anova
- •9.8. Технология проведение дисперсионного анализа в системе gpss World
- •9.9. Особенности планирования экспериментов
- •9.10. Нахождение экстремальных значений на поверхности отклика
- •9.11. Организация экспериментов в gpss WorId
- •9.L2. Выбор наилучшего варианта структуры системы
- •Глава 10. Примеры принятия решений c помощью имитационного моделирования
- •10.1. Моделирование производственного участка
- •10.2. Моделирование технологического процесса ремонта и замены оборудования
- •Приложение Системные сча
- •Сча транзактов
- •Сча блоков:
- •Сча одноканальных устройств:
- •Список литературы
- •Глава 9. Технология имитационного моделирования 167
- •Глава 10. Примеры принятия решений c помощью имитационного моделирования 203
4.12. Переменные
Общая характеристика переменных. При построении модели системы, иногда возникает необходимость задать сложные математические или логические соотношения между атрибутами системы. Для этой цели в программе используются переменные.
В GPSS имеется три типа переменных:
1) арифметические переменные;
2) арифметические переменные c «плавающей точкой»;
3) булевы переменные.
Значение арифметических переменных может использоваться как:
1) операнд блока; в этом случае значение арифметической переменной может представлять собой:
– номер объекта (устройства, МКУ, очереди и т. п.);
– номер параметра транзакта;
– значение стандартного числового атрибута;
3) операнд А функции;
4) операнд А таблицы;
5) операнд выражения другой переменной.
В выражениях арифметические переменные используют такие арифметические операции:
+ алгебраическое сложение;
– алгебраическое вычитание;
# алгебраическое умножение;
/ алгебраическое деление (результатом операции является целая часть частного);
@ деление по модулю;
^ возведение в степень;
\ деление без остатка (перед делением у обоих операндов отбрасываются дробные части, результатом операции есть целая часть частного).
Привычно используемый для умножения во многих языках знак «*», зарезервирован в GPSS для обозначения косвенной адресации, однако в GPSS World есть возможность в меню настройки параметров переопределить для умножения знак «*», А для косвенной адресации – «#». Косвенная адресация является мощным средством для построения компактных и гибких моделей. Ее идея заключается в том, что можно обратиться к любому объекту или СЧА через параметры транзактов. Доступ же к параметрам транзактов осуществляется через СЧА 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 – СЧА для обращения к функции, a P – СЧА транзакта.
Перед выполнением любой арифметической операции определяется значение каждого элемента и выделяется его целая часть. Постоянные без знака считаются положительными числами.
В выражении арифметической переменной могут быть использованы любые СЧА, функции и другие арифметические переменные. Запрещается использование самой вычисляемой переменной, А также переменных со знаком, так как знаки в данном случае рассматриваются как арифметические операции.
Система моделирования GPSS допускает использование скобок в выражениях арифметических переменных (для группировки членов или для обозначения операции умножения).
В GPSS World выражения, записанные в круглых скобках, обрабатываются вычислительной процедурой встроенного алгоритмического языка PLUS. Поэтому их можно использовать в качестве операндов блоков и операторов языка GPSS. Например, выражение, описанное в примере 4.16, может быть использовано таким образом:
ADVANCE (QT$WAITL+3-FN$DSTRB#P7)
1.B GPSS/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" – оператор «и». Оператор «или» проверяет, выполняется ли хотя бы одно из проверяемых условий. Оператор «и» требует выполнения обоих условий.