Содержание
- 2. Язык моделирования GPSS GPSS (General Purpose Simulation System) — система имитационного моделирования общего назначения. Это язык
- 3. GPSS World Программа GPSS World разработана компанией «Minuteman Software». Используемая для лабораторных работ GPSS World Student
- 4. Транзакты Язык основан на схеме транзактов (сообщений). Транзакт — формальный объект, который «путешествует» по системе (перемещается
- 5. Транзакты Каждый транзакт обладает совокупностью параметров, которые называются атрибутами транзакта. В процессе имитации атрибуты могут меняться
- 6. Основные функции создание и уничтожение транзактов; изменение их атрибутов; задержка транзактов; изменение маршрутов транзактов в системе.
- 7. Программа Любая программа на GPSS связана с созданием транзактов, проведением их через последовательность блоков и уничтожением
- 8. Стандартные числовые атрибуты (СЧА) В процессе моделирования язык GPSS автоматически регистрирует и корректирует определенную информацию различных
- 9. Стандартные числовые атрибуты (СЧА) Для указания конкретного объекта, по которому необходимо получить требуемую информацию, за именем
- 10. Некоторые СЧА C1 – текущее значение условного времени. Pi – значение i-го параметра активного транзакта. X$
- 11. Блоки и операторы Каждый блок языка записывается в отдельной строке и имеет следующую структуру: [метка] операция
- 12. Поля блоков Метка является именем-идентификатором блока. Поле операндов может содержать от 1 до 7 подполей: A,B,C,D,E,F,G,
- 13. Генерирование Блок GENERATE генерирует поток сообщений — транзактов, поступающих в систему. Временные интервалы между поступающими в
- 14. Подполя GENERATE A — среднее время между поступлениями транзактов в систему (по умолчанию равно 1); B
- 15. Генерирование Если в поле B может задано число, то для каждого временного интервала поступления транзактов длительность
- 16. Генерирование Например, блок GENERATE 10,5 будет генерировать транзакты через интервалы времени, длительность каждого из которых выбирается
- 17. Генерирование В программе может быть несколько блоков GENERATE. Все эти блоки работают параллельно и начинают генерировать
- 18. Уничтожение Блок уничтожения транзактов — TERMINATE. Обычно для простых программ это последний блок программы. Транзакты, попадающие
- 19. Уничтожение Первоначальная величина счетчика устанавливается специальным управляющим блоком START и пишется в поле A этого блока.
- 20. Уничтожение Например: TERMINATE 1 START 100 Здесь через программу модели пропускается 100 транзактов. В программе должен
- 21. Таймер Таймер служит для задания времени моделирования. Таймер взаимодействует только с блоком START и никак не
- 22. Задержка Для задержки транзактов на определенные интервалы времени предназначен блок ADVANCE. Обязательный операнд A задает время
- 23. Задержка Любой транзакт входит в блок ADVANCE беспрепятственно. В нем транзакт задерживается на период времени, величина
- 24. Занятие устройства При входе транзакта в блок SEIZE выполняется операция занятия устройства, имя которого задается операндом
- 25. Освобождение устройства При входе транзакта в блок RELEASE происходит освобождение устройства, имя которого задается операндом A.
- 26. Освобождение устройства Когда транзакты задерживаются перед блоком SEIZE, они регистрируются симулятором в списке, где упорядочиваются по
- 27. Освобождение устройства Транзакт может занимать любое число устройств. Освобождать занятые устройства транзакт может в любом порядке.
- 28. Пример Посетители приходят в кассу кинотеатра через каждые 10-30 секунд, до 30 секунд занимает знакомство с
- 29. Пример *приход посетителей GENERATE 20,10 *знакомство с обстановкой ADVANCE 15,15 * обращение к кассиру SEIZE KASS
- 30. Очередь Некоторые виды статистических данных накапливаются симулятором автоматически. Другие виды данных могут быть получены с помощью
- 31. Очередь При входе транзакта в блок DEPART длина очереди, имя которой задается операндом A, уменьшается на
- 32. Очередь Необходимо помнить, что данные блоки не влияют на реальное образование очередей транзактов, а служат только
- 33. Пример GENERATE 20,10 ADVANCE 15,15 QUEUE OCH ; включение в очередь SEIZE KASS ; обращение к
- 34. Очередь В этой модели момент включения каждого транзакта в очередь ОСН совпадает с моментом его обращения
- 35. Пример В аэропорту производится регистрация пассажиров перед посадкой в самолет. На регистрацию подходят отдельные пассажиры через
- 36. Пример GENERATE 20,10 ; приход отдельных пассажиров QUEUE LIN ; включение в очередь SEIZE REG DEPART
- 37. Пример GENERATE 60,20„,1 ; приход туристической группы QUEUE LIN SEIZE REG DEPART LIN ADVANCE (EXPONENTIAL(1,0,25)) ;
- 38. Пример Отдельные пассажиры и туристические группы встают в одну и ту же очередь и обслуживаются одним
- 39. Отчет В результате выполнения модели на печать автоматически выводится информация о наличии транзактов в каждом блоке
- 40. Общая информация отчета START TIME. Абсолютное системное время на начало рассматриваемого периода. START TIME устанавливается равным
- 41. Имена и блоки в отчете NAME. Определенные пользователем имена, используемые в программе. VALUE. Числовое значение, присвоенное
- 42. Блоки в отчете ENTRY COUNT. Количество транзактов, вошедших в данный блок с момента последнего RESET или
- 43. Устройства в отчете FACILITY. Имя или номер объекта «устройство». ENTRIES. Количество раз, которое устройство было занято,
- 44. Устройства в отчете AVE. TIME. Среднее время нахождения одного транзакта в устройстве. AVAIL. Состояние доступности устройства
- 45. Устройства в отчете INTER. Количество транзактов, претендующих на устройство после прерывания. RETRY. Количество транзактов, ожидающих выполнения
- 46. Изменение маршрута Блок TRANSFER позволяет осуществлять безусловные, статистические и условные переходы. Тип перехода определяется в операнде
- 47. Изменение маршрута Если в поле A блока TRANSFER записана десятичная дробь, начинающаяся точкой, то блок работает
- 48. Изменение маршрута Если требуется разбить поток заявок более чем на два, необходимо внимательно рассматривать вероятности статистических
- 49. Пример Известно, что поток покупателей в магазине разбивается на три потока (три отдела в магазине) следующим
- 50. Пример Ситуация значительно усложняется, если проценты распределения заявок равны, например 17, 47 и 36. Чтобы упростить
- 51. Условный переход Режим условного перехода определяется мнемокодом, заданным в поле A. Если в поле A определено
- 52. Условный переход Если в поле A определено значение ALL, то поля B и C содержат имена
- 53. Условный переход Если в поле A определено значение PICK, то поля B и C содержат имена
- 54. Проверка состояния Еще одним блоком, изменяющим маршрут транзакта, является блок GATE. Он позволяет изменять путь транзакта
- 55. Проверка состояния Если поле B пусто, то блок работает в режиме отказа. В этом режиме транзакт
- 56. Проверка состояния Если поле B не пусто, то блок работает в режиме условного перехода. Если проверяемый
- 57. Мнемокоды SE – память пуста. SNE – память не пуста. SF – память заполнена. SNF –
- 58. Пример Например, в блоке GATE SF STR транзакт будет задержан до тех пор, пока память с
- 59. Логические условия Блок TEST изменяет маршрут транзакта в зависимости от выполнения разнообразных логических условий, определенных на
- 60. СЧА для работы с очередью Q$ – текущая длина очереди. QA$ – средняя длина очереди. QC$
- 61. Пример Например, при входе транзакта в блок TEST G Q$OCH,5,OTD1 проверяется длина очереди OCH. Если длина
- 62. Пример В магазине находится два отдела: продовольственный и промтоварный. Около 30% приходящих в магазин покупателей направляются
- 63. Пример GENERATE (EXPONENTIAL(1,0,20)) ;приход покупателей TRANSFER .3„PROM ;выбор покупателем отдела ;работа продовольственного отдела PROD TEST LE
- 64. Пример RELEASE PROD1 ;освободить продавца TERMINATE ;уход покупателя ;работа промтоварного отдела PROM TEST LE Q$LIN1,2,FIN QUEUE
- 65. Пример FIN TERMINATE ; таймер GENERATE 2880 TERMINATE 1 START 1
- 66. Работа с памятью Объект «память» призван имитировать разного рода накопители, используемые в исследуемых системах, в которых
- 67. Занятие памяти Блок ENTER занимает память: ENTER A,B. В поле A блока указывается имя памяти, в
- 68. Занятие памяти Если же значение операнда B превышает число свободных единиц памяти, то транзакт задерживается перед
- 69. Занятие памяти Если транзакт задержан перед входом в блок ENTER, но для второго транзакта, приходящего после,
- 70. Освобождение памяти Блок LEAVE освобождает память: LEAVE A,B. В поле A указывается имя освобождаемой памяти, в
- 71. Освобождение памяти Транзакт не должен освобождать большее число единиц памяти, чем их всего занято. Если же
- 72. Освобождение памяти В тот момент модельного времени, когда транзакт освобождает память, симулятор просматривает список задержанных у
- 73. Освобождение памяти Транзакт имеет право занимать и освобождать любое количество памятей, при этом операции занятия и
- 74. Пример Автомобили подъезжают к бензозаправочной станции в среднем каждые 2-6 минут. На станции есть две бензоколонки,
- 75. Пример STO STORAGE 4 ; места под автостоянку COL STORAGE 2 ; бензоколонки GENERATE 4,2 ;
- 76. Пример ADVANCE 5,1 ; заправиться LEAVE COL ; освободить бензоколонку FIN TERMINATE ; покинуть станцию ;
- 77. Переменная Для использования переменной ее необходимо описать оператором VARIABLE (арифметическая переменная), FVARIABLE (арифметическая переменная с плавающей
- 78. Переменная Используются следующие арифметические операции: +, –, # (умножение), /, @ (остаток от деления), \ (целое
- 79. Переменная Переменная является единственным объектом языка, по которому по окончанию моделирования в отчете не выдается никакой
- 80. Ячейки Ячейки служат для хранения некоторых постоянных или изменяющихся значений данных программы. Ячейка может обозначаться как
- 81. Ячейки Например, SAVEVALUE 10+,1 означает, что при поступлении транзакта в блок к содержимому 10-й ячейки прибавляется
- 82. Ячейки Перед началом имитации содержимое всех используемых в программе ячеек устанавливается в 0. Если же требуется
- 83. Пример Производство деталей включает длительный процесс сборки, заканчивающийся коротким периодом обжига в печи. Поскольку содержание печи
- 84. Пример Необходимо определить оптимальное количество сборщиков, исходя из максимизации прибыли за неделю (8-часовой рабочий день без
- 85. Пример SBOR VARIABLE N ; при прогоне модели вместо N ставим конкретное целое число ZATR VARIABLE
- 86. Пример RELEASE PECH SAVEVALUE IZD+,280 TRANSFER ,PROD GENERATE (56#60) SAVEVALUE REZULT,V$PRIB TERMINATE 1 START 1
- 87. Матрицы Матрицы служат для хранения некоторых постоянных или изменяющихся значений данных программы в виде массивов. Чтобы
- 88. Матрицы Начальные значения всех элементов матрицы равны нулю. Если необходимо присвоить всем элементам матрицы одинаковые значения,
- 89. Матрицы Для изменения значения отдельного элемента матрицы используется блок MSAVEVALUE. В поле A блока указывается имя
- 90. Матрицы При необходимости обращения к элементу матрицы указывается СЧА элемента: МX$ (I, J) (если матрица задана
- 91. Приоритет Каждый транзакт может иметь свой приоритет — от 0 до 127. Чем больше номер, тем
- 92. Параметры Каждый транзакт может иметь до 100 параметров (атрибутов). Значения параметрам присваиваются с помощью блока ASSIGN.
- 93. Параметры Например, ASSIGN 1,10 – занести 10 в P1. ASSIGN 2+,V$VAR1,EXP – добавить в Р2 значение
- 94. Параметры Используя блок ASSIGN, можно организовывать циклы в программе. Например, если необходимо прогнать транзакт 10 раз
- 95. Пример В магазине электротоваров работают два консультанта. Посетители заходят в магазин в среднем каждые 2 минуты.
- 96. Пример Известно, что примерно у 3-х процентов покупателей есть карточка со скидкой в 10% , а
- 97. Пример CONS STORAGE 2 POKUP FUNCTION RN1,C2 0,500/1,20000 SKIDKA FUNCTION RN1,D3 .03,0.10/.15,0.05/1,0 SUM VARIABLE FN$POKUP#(1-P1)
- 98. Пример GENERATE (EXPONENTIAL(1,0,2)) ASSIGN 1,FN$SKIDKA ADVANCE (EXPONENTIAL(1,0,10)) TRANSFER .3„OSM ENTER CONS ADVANCE (EXPONENTIAL(1,0,5)) LEAVE CONS OSM
- 99. Пример SEIZE KAS ADVANCE (EXPONENTIAL(1,0,3)) SAVEVALUE PRIB+,V$SUM RELEASE KAS UXOD TERMINATE GENERATE 600 TERMINATE 1 START
- 100. Таблицы Для описания таблицы используется блок TABLE. В поле метки этого блока задается имя таблицы, в
- 101. Таблицы Например, если нас интересует гистограмма времени, проводимого одним транзактом в очереди LIN, то мы можем
- 102. Таблицы Если таблица описана, то транзакты могут фиксировать в ней информацию с помощью блока TABULATE. В
- 103. Логические переключатели Логические переключатели могут находиться в двух положениях: «включен» и «выключен». Перед началом выполнения программы
- 104. Логические переключатели LOGIC R 1 — логический переключатель с номером 1 устанавливается в состояние «выключен». LOGIC
- 105. Пример Паспортный стол работает с 9 до 18 часов с перерывом на обед с 13 до
- 106. Пример Те посетители, кто стоял в очереди и не успел обслужиться до обеда, обслуживаются после перерыва
- 107. Пример PROP STORAGE 3 TAB1 QTABLE OCH_NACH,10,10,10 TAB2 QTABLE OCH_PROP,10,10,10 RAZN VARIABLE N$VXOD-N$UXOD ;количество посетителей, которые
- 108. Пример ;работа начальника паспортного стола GENERATE (EXPONENTIAL(1,0,5)) GATE LR TIME,FIN ;если рабочий день закончился — уход
- 109. Пример ;работа отдела прописки QUEUE OCH_PROP GATE LR OBED ; ожидание окончания обеда ENTER PROP DEPART
- 110. Пример GENERATE 240„,1 ; начало рабочего дня LOGIC S OBED ; начало обеда ADVANCE 60 LOGIC
- 111. Синхронизация транзактов Для моделирования одновременного начала нескольких процессов предназначен блок SPLIT. В момент входа транзакта в
- 112. Синхронизация транзактов Например, при входе транзакта в блок SPLIT 4,NEXT порождается четыре транзакта, идентичных вошедшему, и
- 113. Синхронизация транзактов Например, если транзакт, имеющий нуль в десятом параметре, войдет в блок SPLIT 2,BLOCK,10 то
- 114. Синхронизация транзактов Для одновременного завершения нескольких процессов используется блок ASSEMВLE. Этот блок собирает заданное в поле
- 115. Синхронизация транзактов В одном блоке ASSEMBLE могут одновременно проходить сборку транзакты, принадлежащие к разным семействам. Например,
- 116. Синхронизация транзактов Блок GATHER работает аналогично блоку ASSEMBLE с тем отличием, что транзакты, попав в блок
- 117. Синхронизация транзактов Блок MATCH предназначен для синхронизации процессов. Если в программе встречается этот блок, то обязательно
- 118. Синхронизация транзактов Блок MATCH предназначен для синхронизации процессов. Если в программе встречается этот блок, то обязательно
- 119. Пример Промоделировать сборку изделий рабочими А, В и С. Изделия в разобранном виде поступают каждые 200-400
- 120. Пример GENERATE 300,100 ;поступление изделий SPLIT 1,MANB ;разделение изделий SEIZE RABA ;занять рабочего А ADVANCE 100,20
- 121. Пример MANB SEIZE RABB ;занять рабочего B ADVANCE 80,20 FAZ1B MATCH FAZ1A ;ждать, если А не
- 122. Пример MANC ASSEMBLE 2 ;ждать обе части изделия SEIZE RABC ;занять рабочего C ADVANCE 50, 5
- 123. Захват Блок PREEMPT — захватить устройство. Транзакт, попадающий в этот блок, захватывает устройство, имя которого указано
- 124. Захват Если при входе транзакта в блок PREEMPT устройство занято другим транзактом, то в этом случае
- 125. Захват Если прерываемый транзакт в момент прерывания находится в блоке ADVANCE, то, начиная с момента прерывания,
- 126. Захват Кроме поля A, в блоке PREEMPT могут быть заданы операнды B, C, D и E.
- 127. Захват В поле C может быть указана метка какого-либо блока, на который будет передан прерванный транзакт.
- 128. Захват Если в поле E блока записано обозначение RE, то прерванный транзакт больше не будет претендовать
- 129. Освобождение Блок RETURN освобождает устройство. Этот блок используется в паре с блоком PREEMPT. Если транзакт захватил
- 130. Циклы Для организации циклов используется блок LOOP. Поле A этого блока содержит имя или номер параметра,
- 131. Циклы Например, если необходимо, чтобы через блок ADVANCE все транзакты проходили по 10 раз, то этот
- 132. Системное время В СЧА С1 и АС1 хранится текущее значение системного времени. СЧА С1 содержит значение
- 133. Системное время Каждый транзакт при генерации снабжается отметкой времени. Время пребывания транзакта в модели содержится в
- 135. Скачать презентацию