Лекция 6 (01.10.2015)

реклама
Имитационное моделирование в исследовании
и разработке информационных систем
Лекция 6
Примеры систем имитационного
моделирования (продолжение)
Процессо (транзактно)ориентированный подход
• Удобен для моделирования систем
массового обслуживания
• Сеть узлов обслуживания (ресурсов)
• Заявки на обслуживание (транзакты)
• Заявки проходят по сети узлов
(процесс обработки)
• При занятости узла заявки ставятся в
очередь
2
GPSS
GPSS – general purpose simulation system
Известен с 1961 г.
• GPSS World ((С) 2007 Minuteman Software)
– http://www.minutemansoftware.com/downloads.a
sp
• Расширенный редактор GPSS World ((С)
Элина Компьютерс)
– http://elina-computer.ru/static/rasshirennyiredaktor.html
• Презентация (хорошая)
– http://staff.mmcs.sfedu.ru/~dubrov/files/tut_ipm_
01_gpss.pdf
Синтаксис операторов языка
[№ строки] [метка] имя [операнды] [комментарий]
(идёт от языка Фортран)
курсивом - <метапонятие>
Простой пример:
;∗∗∗∗∗∗Имитация работы парикмахерской ∗∗∗∗∗∗∗∗
GENERATE 300,100 ; Создание потока посетителей
SEIZE Barber ; Захват или ожидание парикмахера
ADVANCE 400,200 ; Обслуживание клиента
RELEASE Barber ; Освобождение парикмахера
TERMINATE 1 ; Уход клиента
; Исполняемые команды
START 100 ; Имитация 100 клиентов
Создание и удаление
транзактов
GENERATE [интервал],[разброс],[задержка],[ограничение],[приоритет]
Создаёт транзакты
ограничение – максимальное число транзактов
TERMINATE [вычитаемое]
Уничтожает транзакт и вычитает из счётчика транзактов (заданного в
команде START) указанное число
Атрибуты транзакта:
- Порядковый номер;
- Время появления;
- Текущий блок;
- Пользовательские параметры (128 штук)
Модель из лекции 4 (обработка
запросов одного типа)
; Блоки модели
GENERATE 7,2 ; Создание транзакций
SEIZE Proc ; Захват устройства (процесора)
ADVANCE 5,2 ; Задержка (моделирование обработки)
RELEASE Proc ; Освобождение устройства
TERMINATE 1 ; Уничтожение транзакций
; Команды
START 100 ; Моделирование 100 транзакций
Очереди для сбора статистики
QUEUE имя очереди[,количество ]
DEPART имя очереди[,количество]
; это «виртуальные» очереди
GENERATE 7,2 ; Создание транзакций
QUEUE Proc_Q,1
SEIZE Proc ; Захват устройства (процесора)
DEPART Proc_Q, 1
ADVANCE 5,2 ; Задержка (моделирование
обработки)
RELEASE Proc ; Освобождение устройства
TERMINATE 1 ; Уничтожение транзакций
Многоканальные
устройства
имя STORAGE ёмкость
ENTER имя[,количество]
LEAVE имя[,количество]
Занятие и освобождение указанного
числа единиц ресурса
При невозможности занятия –
постановка в очередь
Как выбирается транзакт из очереди?
8
Многоканальные устройства
обслуживания (пример)
; Описания
Multi1 STORAGE 3 ; Вместимость устройства
; Блоки модели
GENERATE 3,2 ; Создание транзакций
QUEUE Queue1 ; Вход транзакций в очередь
ENTER Multi1 ; Захват транзакций
DEPART Queue1 ; Выход транзакций из очереди
ADVANCE 12,2 ; Задержка транзакций
LEAVE Multi1 ; Освобождение транзакций
TERMINATE 1 ; Уничтожение транзакций
; Команды
START 100 ; Моделирование 100 транзакций
9
Очереди ограниченной ёмкости
; Описания
Seats STORAGE 3 ; Вместимость очереди
; Блоки модели
; Входящие заявки
GENERATE 4,2 ; Создание транзакций
TRANSFER BOTH,,Lost ; Уход, если очередь занята
; Канал обслуживания с очередью
ENTER Seats ; Вход в накопитель
SEIZE Barber ; Захват канала
LEAVE Seats ; Выход из накопителя
ADVANCE 13,3 ; Задержка обслуживания
RELEASE Barber ; Освобождение канала
; Заявки, прошедшие/не прошедшие канал
TERMINATE 1 ; Уничтожение транзакций
Lost TERMINATE 1 ; Уничтожение транзакций
10
Безусловный и условный переход
Случайный переход
TRANSFER вероятность,[метка1],метка2
Переход на первый из свободных блоков
TRANSFER BOTH,[метка1],метка2
Обобщение предыдущего
TRANSFER ALL,[метка1],[меткаn]
[,количество блоков]
Количество – шаг по строкам программы!
11
Работа с параметрами транзактов
• Присваивание значения
• ASSIGN h№
параметраi[hсуффиксi],hзначени
еi[,hфункцияi]
• Сохранение модельного времени
• MARK h№ параметраi
• Использование значения MP№
12
Модель с двумя потоками запросов
GENERATE 7,2 ; Первый поток
ASSIGN 1,1 ; Номер потока в транзакцию
TRANSFER ,Work
GENERATE 5,3 ; Второй поток
ASSIGN 1,2 ; Номер потока в транзакцию
Work SEIZE Proc ; Захват устройства (процессора)
ADVANCE 5,2 ; Задержка (моделирование обработки)
RELEASE Proc ; Освобождение устройства
TERMINATE 1 ; Уничтожение транзакций
; Команды
START 100 ; Моделирование 100 транзакций
13
Два потока запросов – учёт очередей
GENERATE 7,2 ; Первый поток
ASSIGN 1,1 ; Номер потока в транзакцию
QUEUE Q1,1
TRANSFER BOTH,,Work
;
GENERATE 5,3 ; Второй поток
ASSIGN 1,2 ; Номер потока в транзакцию
QUEUE Q2,1
;
Work SEIZE Proc ; Захват устройства (процессора)
TEST EQ P1,1,DEP2
DEPART Q1,1
TRANSFER BOTH,,PR
DEP2 DEPART Q2,1
PR ADVANCE 5,2 ; Задержка (моделирование обработки)
RELEASE Proc ; Освобождение устройства
TERMINATE ; Уничтожение транзакций
GENERATE 300 ;
TERMINATE 1
; Команды
START 1 ; Моделирование в течение 300 единиц времени
14
Использование функций
• Для пуассоновского потока событий
• EXPONENTIAL([№
генератора],[t0],[1/лямбда])
• GENERATE (EXPONENTIAL(1,0.0,6.0))
15
Ещё управляющие конструкции
• LOOP h№ параметраi[,hметкаi]
• TEST hотношениеi
hзначение1i,hзначение2i[,hметка
i]
16
Дистанционное управление
• PREEMPT hустройствоi,[hрежим
приоритетаi],[hназначениеi],[h№
параметраi],[hрежимi]
• R имя ресурса
Возможности систем моделирования в
части непрерывного моделирования
(обзор, без подробностей)
• Matlab-Simulink
• Схема из блоков
• Стандартные блоки (и библиотеки
блоков)
• Определённые пользователем блоки
• Для различных отраслей (общего
назначения, системы управления,
электроника, механика …)
18
Непрерывное моделирование (2)
• Возможность использования блоков
интегрирования и
дифференцирования
• Блоки с входами и выходами и
«симметричные» блоки (для
радиоэлементов)
• «Решатель» (solver) системы ОДУ
• Различные алгоритмы для
компромисса между скоростью и
точностью
19
Непрерывное моделирование (3)
20
Спасибо за внимание!
21
Скачать