Технология GPSS Транзактно-ориентированное моделирование Особенности GPSS World Модель описывается в терминах транзактов – элементов потока обслуживания. Симулятор и другое ПО GPSS World: • Обеспечивает заданный маршрут продвижения транзактов; • Планирует события, происходящие в модели, путем регистрации времени наступления каждого события и выполнения их в нарастающей временной последовательности; • Регистрирует статистическую информацию; • Обеспечивает продвижение модельного времени. Классификация объектов • Динамические объекты – транзакты (создаются, перемещаются по блокам, уничтожаются); • Операционные блоки – задают логику функционирования модели системы и определяют пути следования транзактов; В блоках могут происходить события: 1) создание и уничтожение транзактов; 2) изменение числового атрибута объекта; 3) задержка транзакта на определенный период времени; 4) изменение маршрута движения транзакта. Классификация объектов • Объекты аппаратной категории – элементы оборудования, которые управляются транзактами (одноканальные, многоканальные, логические ключи); • Объекты вычислительной категории; • Запоминающие объекты; • Группирующие категории Операторы GPSS GENERATE Ввод транзактов в модель – блок GENERATE GENERATE [A],[B],[C],[D],[E] A – средний интервал времени; В – половина поля допуска равномерно распределенного интервала; С – смещение интервалов; D – ограничитель транзактов; E – уровень приоритета транзактов. Операторы GPSS GENERATE Примеры. 1) Транзакт входит в модель каждые 12 минут с отклонением в 4 минуты: GENERATE 12,4 2) Приход в модель через каждые 20 минут с отклонением 3 минут 5 транзактов: GENERATE 20,3,,5 Операторы GPSS GENERATE Другие распределения – используются функции типовых распределений вероятностей: GENERATE Exponential(1,0,10) 1 – номер генератора случайных чисел; 0 – смещение; 10 – среднее значение. GENERATE Normal(1,10,3) 1 – номер генератора случайных чисел; 10 – среднее значение; 3 – стандартное отклонение. Операторы GPSS TERMINATE Вывод транзактов из модели – блок TERMINATE TERMINATE [A] A – величина уменьшения счетчика завершения. Работает вместе с блоком START, который задает величину счетчика транзактов. Блок TERMINATE уменьшает счетчик транзактов на величину A. Операторы GPSS – одноканальное устр-во • Такое устройство может обслуживать только одно требование; • Требование обслуживается с определенной задержкой. Устройства могут иметь имена – числовые или символические. Занять устройство. SEIZE A A – имя занимаемого устройства. Транзакт не может занять устройство, если оно обслуживает другой транзакт. Команда выполнится, когда устройство будет освобождено. Освободить устройство. RELEAZE A A – имя освобождаемого устройства. Операторы GPSS – задержка по времени Задержка продвижения транзакта – блок ADVANCE. ADVANCE A,B A – среднее время задержки на обслуживание; В – половина поля допуска равномерно распределенной случайной величины. Классическая последовательность блоков: SEIZE – ADVANCE - RELEASE Операторы GPSS – захват устройства При захвате устройства происходит приоритетное начало обслуживания определенного транзакта или прерывание предыдущих операций - блок PREEMPT. PREEMPT A A – имя устройства. Освобождение устройства осуществляет блок RETURN RETURN A A – имя устройства. Пример 1 парикмахерская *LINE-LOC OPERATION A,B,C,D,E,F,G COMMENTARY ; простой проект с одним парикмахером и ; без отслеживания параметров транзактов GENERATE 8,5 ; генерация прихода клиента SEIZE Master ; проверка занятости мастера ; и начало обслуживания, если мастер свободен ADVANCE 15,8 ; обслуживание клиентов RELEASE Master ; освобождение парикмахера TERMINATE 1 ; уход клиента START 100 ; запуск модели для 100 клиентов Пример 1 – запуск модели Пример 1 – запуск модели Стандартный отчет содержит следующую информацию: • Начальное (START TIME) и конечное (END TIME) модельное время; • Число блоков модели (BLOCKS); • Число устройств (FACILITIES и STORAGES); • Информация о именах; • Информация о канале обслуживания; • Список текущих событий; • Список будущих событий. Пример 1 – запуск модели Информация об устройстве: • Имя FACILITY; • Количество фактов занятия устройства ENTRIES; • Коэффициент использования канала обслуживания UTIL; • Среднее время обслуживания заявки AVE.TIME; • Состояние устройства в момент окончания моделирования AVAIL; • Номер транзакта, который занимает устройство OWNER; • Количество транзактов, которые ожидают отбработки PEND. Параметры устройства Параметры устройства можно получить и в процессе моделирования: • F – состояние устройства; • FC – счетчик обслуженных заявок; • FR – коэффициент использования; • FT – среднее время использования устройства одним транзактом; • FV – состояние доступности и пр. Обратиться к параметру можно: Имя_пар$Имя_устр Сбор статистики Основные статистические параметры обычно связаны с параметрами ожидания, т.е. нужна очередь. QUEUE A, [B] A – имя очереди; B – число единиц, на которое увеличивается очередь. Выход из очереди: DEPART A, [B] A – имя очереди; B – число единиц, на которое увеличивается очередь. Сбор статистики Об очередях можно узнать следующую информацию: • Q – текущая длина очереди; • QA – средняя длина очереди; • QC – общее число входов в очередь; • QM – максимальная длина очереди; • QT – среднее время пребывания в очереди (с учетом нулевых входов); • QX – среднее время пребывания в очереди (без учета нулевых входов); • QZ – число входов транзактов, время нахождения которых в очереди равно 0. Табулирование Для наглядного показа параметров можно создавать таблицу: • Определить таблицу: Имя TABLE A, B, C, D A – аргумент, который будет табулироваться; B – верхний предел первого интервала; C – ширина интервала; D – число интервалов. • Собственно запись в таблицу: TABULATE A A – имя таблицы. Пример – добавление очереди *LINE-LOC OPERATION A,B,C,D,E,F,G COMMENTARY Tab_Q TABLE QX$QU,10,10,20 GENERATE 8,5 ; генерация прихода клиента QUEUE QU ; клиент встает в очередь SEIZE Master ; проверка занятости мастера DEPART QU ; начало обслуживания TABULATE Tab_Q ; табулирование параметра ADVANCE 15,8 ; обслуживание клиентов RELEASE Master ; освобождение парикмахера TERMINATE 1 ; уход клиента START 100 ; запуск модели для 100 клиентов Пример – просмотр таблицы Пример – просмотр таблицы Многоканальные устройства Многоканальное устройство управляется следующим образом: • Задается устройство и его емкость: Имя STORAGE A A – имя многоканального устройства; • Занятие канала на обслуживание: ENTER A,[B] A – имя занимаемого устройства; B – число занимаемых приборов. • Освобождение канала: LEAVE A,[B] A – имя освобождаемого устройства; B – число освобождаемый приборов. Многоканальные устройства Отчет содержит следующую информацию о многоканальном устройстве: • REM – число каналов, свободных при окончании моделирования; • MIN – минимальное число каналов, которые использовались при моделировании; • MAX – максимальное число каналов, которые использовались при моделировании; • AVL – состояние устройства в момент окончания моделирования; • AVE.C. – среднее число занятых каналов; • UTIL – коэффициент использования устройства. Многоканальные устройства В процессе моделирования доступны параметры устройства: • R – число свободных каналов; • S – текущее содержимое; • SA – среднее содержимое; • SC – счетчик числа входов; • SE – занятость; • SF – степень заполнения; • SM – максимальное содержимое; • SR – коэффициент использования; • ST – среднее время задержки на единицу емкости. Пример – 3 парикмахера Masters STORAGE 3 ; 3 мастера Tab_Q TABLE QX$QU,2,2,10 GENERATE 8,5 QUEUE QU ENTER Masters DEPART QU TABULATE Tab_Q ADVANCE 20,8 LEAVE Masters TERMINATE 1 START 100 ; запуск модели для 100 клиентов Параметры транзактов Транзакты могут иметь параметры, значения которых можно им назначать: • Pj – значение j-ого параметра активного транзакта; • XN1 – номер активного транзакта; • PR – приоритет активного транзакта; • MPj – время прохождения некоторого участка; • M1 – время пребывания в модели активного транзакта. Назначить значение параметра: ASSIGN A,B A – номер модифицируемого параметра; B – величина параметра. Модификация потоков транзактов Переход транзакта к любому блоку обеспечивает блок: TRANSFER [A], [B], [C], [D] A – способ перехода. Остальные параметры зависят от параметра A. Например, безусловный переход: TRANSFER ,B B – метка блока, куда должен перейти транзакт. Вероятностный переход: TRANSFER A,[B],C A – вероятность передачи транзакта в блок С (в долях тысячи); B – метка блока, куда перейдет транзакт с вероятностью 1-А; С - метка блока, куда перейдет транзакт с вероятностью А. Модификация потоков транзактов Режим BOTH – транзакт пытается перейти к блоку, метка которого указана в операнде B. Если этот блок занят, то он пытается перейти к блоку C. TRANSFER BOTH, B, C, Режим ALL – проверяется блок, указанный в блоке B. Если он занят, то последовательно проверяются все блоки, пока не будет достигнут блок, заданный в операнде С. Местоположение каждого проверяемого блока определяется с помощью шага, заданного в параметре D. TRANSFER ALL, B, C, D И другие режимы. Условный переход Для формирования условного блока используется: TEST X A,B,[C] X – операция отношения (G,L, GE, LE, NE, E); A, B – операнды отношения; С – метка блока, куда переходит транзакт, если ответ отрицательный. Пример – обеденные перерывы (версия 1) Tab_Q TABLE QX$QU,5,5,10 Tab_T TABLE P1,1,1,3 GENERATE 8,5 ; генерация прихода клиента QUEUE QU ; клиент встает в очередь MARK 2 ; в P2 сохраняется модельное время TEST GE P2,180,ServeAll ;если время до 12, то ;работают 3 парикмахера TEST LE P2,270,ServeAll ;если время после 13.30, то ;работают 3 парикмахера TEST GE P2,210,Serve1 ; если после 12 до 12.30 – ;обедает парикмахер 1 TEST GE P2,240,Serve2 ; если после 12.30 до 13.00 – ; обедает парикмахер 2 Пример – обеденные перерывы (версия 1) TRANSFER Serve1 Serve2 ServeAll Mast1 BOTH,Mast1,Mast2 TRANSFER BOTH,Mast2,Mast3 TRANSFER BOTH,Mast1,Mast3 TRANSFER ALL,Mast1,Mast3,8 SEIZE Master1 ; клиент пытается попасть к ;парикмахеру 1 DEPART QU TABULATE Tab_Q ASSIGN 1,1 TABULATE Tab_T ADVANCE 15,8 Пример – обеденные перерывы (версия 1) RELEASE Master1 TRANSFER ,ExitTran ; аналогично задаются группы блоков Master2 и Master3 . . . ExitTran TERMINATE 1 ; уход клиента START 100 ; запуск модели для 100 клиентов Пример – обеденные перерывы (версия 1) RELEASE Master1 TRANSFER ,ExitTran ; аналогично задаются группы блоков Master2 и Master3 . . . ExitTran TERMINATE 1 ; уход клиента START 100 ; запуск модели для 100 клиентов Обслуживание заявок Пример – обеденные перерывы (версия 2) Версия 1 показывает, что в заданные временные интервалы к отдельным парикмахерам не направляются клиенты. Версия 2 предполагает, что обеденный перерыв – это внеочередной клиент, который более приоритетен по сравнению с другими клиентами. Начало версии 2 похоже (без проверок на время) Tab_Q TABLE QX$QU,5,5,10 Tab_T TABLE P1,1,1,3 Tab_D TABLE P3,240,2,100 GENERATE 8,5 ; генерация прихода клиента QUEUE QU ; клиент встает в очередь ServeAll TRANSFER ALL Mast1,Mast3,8 Пример – обеденные перерывы (версия 2) Mast1 SEIZE Master1 DEPART QU TABULATE Tab_Q ASSIGN 1,1 TABULATE Tab_T ADVANCE 15,8 RELEASE Master1 TRANSFER ,ExitTran ; аналогично по Mast2 и Mast3 Пример – обеденные перерывы (версия 2) GENERATE 240,,,1 ;3 группы Dinner1 TEST E F$Master1,0,loop1 PREEMPT Master1 MARK 2 ASSIGN 3,P2 TABULATE Tab_D ADVANCE 30 RETURN Master1 TERMINATE 1 TRANSFER ,gen2 ;переход к блоку для 2 мастера loop1 ADVANCE 5 TRANSFER ,Dinner1 Пример – обеденные перерывы (версия 2) TERMINATE 1 TRANSFER ,EX loop3 ADVANCE 5 TRANSFER ,Dinner3 EX START 103 ; запуск модели для 100 клиентов Задания В качестве усложнения модели можно предложить следующие: 1. Предусмотреть приход клиентов для получения различных услуг (из заданного списка) (не все мастера могут предоставить каждую услугу); 2. Согласно квалификации мастеров и оказанным услугам рассчитать стоимость оказания услуг.