Имитационное моделирование в исследовании и разработке информационных систем Лекция 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