Пакет имитационного моделирования GPSS.

advertisement
Технология
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. Согласно квалификации мастеров и
оказанным услугам рассчитать стоимость
оказания услуг.
Download