Имитационное моделирование в исследовании и разработке информационных систем Лекция 4 Основные подходы к организации дискретно-событийных имитационных моделей. Пример построения модели. Основные возможности средств имитационного моделирования Этапы создания ИМ (1) • Анализ требований и проектирование – Постановка цели моделирования – Построение концептуальной модели – Проверка достоверности концептуальной модели • Реализация модели – Выбор языка и средств моделирования – Программирование модели – Отладка модели 2 Этапы создания ИМ (2) • Проведение экспериментов и анализ результатов – Планирование экспериментов – Прогон модели – Анализ результатов и выводы 3 Концептуальная модель • Как правило, знаковая (лингв. или графич. модель) различной степени формализованности • Построение – процесс неформальный, интуитивный • Определяет структуру моделируемой системы, алгоритмы функционирования компонентов, их состояния, порядок взаимодействия, и т.д. • Представляет собой решение по абстракции и упрощению иследуемой системы • «техническое задание» на программирование имитационной модели 4 ИМ по способам продвижения времени • С постоянным шагом – Непрерывные модели – Потактовые модели • От события к событию – Дискретно-событийные модели • Гибридные модели – Совместная работа компонентов разного рода – Переключение режимов «непрерывного» компонента 5 Пример моделируемой системы Информационная система обрабатывает два потока запросов: S1 и S2 Для каждого из потоков заданы: интервал времени между запросами delta1(n), delta2(n) сложность (=время обработки) запроса c1(n), c2(n) 6 Пример моделируемой системы (3) • Обработка происходит в процессах p1, p2, выполняемых на одном вычислителе • Запрос, приходящий в момент обработки предыдущего запроса, ставится в соответствующую очередь 7 Пример (4) • Дано: характеристики потоков запросов • Требуется: определить «наилучший» способ планирования процессов – Условия «наилучшести»? • Подцель: воспроизвести работу системы так, чтобы правильно отразить зависимость длины очередей от времени и занятость процессора 8 Пример (5) Критерии эффективности: • Минимум среднего времени обработки запроса • Длина очередей равна 0 (обработка в реальном времени) • … Планировщик: • Нет вытеснения • Вытеснение • Квантование (round-robin) 9 Предположения • Реальные входные и выходные данные запроса не моделируются • Объём входных и выходных данных не учитывается (разве что во времени обработки) • Время обработки запроса «в отсутствие помех» записано в запросе (время = сложность * производительность ЦП) • Затраты на переключение процессов нулевые 10 Моделирование посредством планирования событий mod_time=0; calendar.add( first_event, 0 ); //начальное событие(я) while(!finish()) // пока не достигнуто условие окончания { event=calendar.get_first_event(); // событие с мин. Временем mod_time=event.time; switch(event.type) { case type1: /* обработка */ calendar.add(события, mod_time+интервал ); case type2: …. } } 11 Недостатки «прямолинейного» событийного подхода • Нет структуры • Неудобства детализации модели • Неудобства объединения моделей и построения иерархии Для крупных моделей используется внутри библиотечных объектов или внутри среды прогона моделей Интересный пример: DiskSim – настраиваемая модель дисковой системы 12 http://www.pdl.cmu.edu/DiskSim/ Базовые средства для построения моделей (дискретно-событийных и не только) • • • • • Модель строится из компонентов (блоков) Блоки имеют входные и выходные порты Порты соединяются каналами Блоки могут образовывать иерархию Для простого блока определяется алгоритм функционирования – изменение внутреннего состояния – взаимодействие блоков • посылка сообщений • реагирование на сообщения 13 OMNet++ • www.omnetpp.org • Свободное использование в некоммерческих целях • Имеется коммерческий вариант www.omnest.com • Основа для крупных проектов моделирования сетей: INET, MiXiM • Имеется IDE • графическое редактирование структуры модели (и текстовое описание на языке NED) • описание алгоритмов работы на C++ • Документация https://omnetpp.org/documentation • Краткое введение: https://omnetpp.org/pmwiki/index.php?n=Main.Omn14 etppInNutshell Описание работы компонента • Наследуется из CSimpleModule • initialize(), finish() • send( msg, gate )// послать сообщение через выходной порт • scheduleAt(time, msg) // послать сообщение себе) • scheduleAt(SimTime()+delta, msg) • sendDelayed(msg, delay, gate) • cancelEvent(msg) 15 Сообщение • • • • • • • выводится из класса cMessage Некоторые функции void setName(const char *name); void setKind(short k); void setTimestamp(); void setTimestamp(simtime_t t); void setSchedulingPriority(short p); 16 Пример: генератор запросов class Gen : public cSimpleModule{}; void Gen :: initialize() { scheduleAt(0, message Start) } void Gen:: handleMessage(){ message req.size = get_size(); // сложность запроса send(message req, out); scheduleAt (SimTime()+get_delta(), message Start); } 17 • • • • • • Модель процесса обработки (без планировщика) class Proc: public cSimpleModule { int state; } void Proc::initialize() { state=IDLE; } void Proc::handleMessage (msg) { case message Req: If (state == IDLE ) {state = RUN; scheduleAt(SimTime()+message Req.size, message End); // запустить исполнение • If (state == RUN) • Queue.put(message Req ); // поместить в очередь • Break; 18 Модель процесса обработки (без планировщика) - 2 • • • • • • • case message End: If ( queue.empty() )state = IDLE; Else {message Req = queue.get(); scheduleAt (SimTime(), message Req ); Break; } // case } // handleMessage 19 • • • • • • • • Процесс обработки с планировщиком Добавляем вход от планировщика Сообщения: pause, cont Переменная состояния: time_left = 0; В handleMessage() { Case message pause: If (state == IDLE) break /* из case */; If( state == RUN){ time_left = message End.getTimestamp()SimTime(); cancelEvent(message End); 20 state = } Процесс обработки с планировщиком (2) • case message cont: • If (state == RUN) break; • If(state == IDLE) • if(time_left > 0) {scheduleAt( SimTime()+time_left, message End); state = RUN;} • Break; 21 Что осталось доделать? • Условие остановки моделирования • Написать планировщик • Навести порядок с переменными типа «сообщение» 22 Еще один способ задания алгоритма функционирования • • • • Используем user-space threads У каждого компонента свой стек Используем процедурный стиль Component::activity() – – – – – – receive() wait() send() scheduleAt() cancelEvent() end() 23 Процесс в процедурном стиле 24 Структура модели • Язык NED • Графическое редактирование • Возможность построения массивов компонентов и массивов портов • Доступ к структуре модели из компонента • Доступ к порту по имени, по номеру, по ссылке 25 Ещё об основных возможностях OMNeT++ • Конфигурационные файлы • Графический интерфейс для прогона модели; возможность анимации • Трассировка • Анализ данных • Интегрированная среда разработки 26 Подходы к организации моделей • Событийно-ориентированный • Процессо-ориентированный – Транзакты – «собственно» процессы и нити (threads) • Агентно-ориентированный (развитие «собственно» процессного) 27 Система моделирования AnyLogic • www.anylogic.ru • Российская компания (вышла из СПбГТУ) • есть бесплатная версия для образовательных целей • Широкое применение в различных областях 28 AnyLogic (2) • Интегрированная среда разработки • Графическое редактирование описания модели, с возможностью вставки фрагментов текста на Java • Выполнение модели в различном масштабе времени, по шагам • Развитые возможности визуализации 29 Описание модели в AnyLogic • • • • Создание агента (=компонент) Параметры (настроечные) Переменные Диаграмма состояний 30 Процессо (транзактно)ориентированный подход • Сеть узлов обслуживания (ресурсов) • Запросы на обслуживание (транзакты) • Очереди транзактов Классический пример: GPSS since 1961 • GPSS World ((С) 2007 Minuteman Software) • Расширенный редактор GPSS World 31 ((С) Элина Компьютерс) Фрагмент модели на GPSS GENERATE 3.34,1.7 ;Create next customer. TEST LE Q$Barber,3,Finis ;Wait if line 3 or less * else leave shop ASSIGN Custnum,X$Custnum ;Assign number to customer QUEUE Barber ;Begin queue time. SEIZE Barber ;Own or wait for barber. DEPART Barber ;End queue time. ADVANCE 6.66,1.7 ;Haircut takes a few minutes. RELEASE Barber ;Haircut done. Give up the barber. Finis TERMINATE 1 ;Customer leaves. 32 Агентно-ориентированное моделирование С точки зрения практического применения агентное моделирование можно определить как метод имитационного моделирования, исследующий поведение децентрализованных агентов и то, как это поведение определяет поведение всей системы в целом. При разработке агентной модели, инженер вводит параметры агентов (это могут быть люди, компании, активы, проекты, транспортные средства, города, животные и т.д.), определяет их поведение, помещает их в некую окружающую среду, устанавливает возможные связи, после чего запускает моделирование. Индивидуальное поведение каждого агента образует глобальное поведение моделируемой системы. 33 Создание популяции агентов Динамическое создание и удаление агентов Среда Непрерывное пространство Дискретное пространство ГИС пространство Связи агентов и сети Взаимодействие агентов Синхронизация агентов Сбор статистики по агентам 34 Архитектура среды ИМ РВС РВ Структурный редактор Визуализатор трассы Спасибо за внимание! Просьба к слушателям: По возможности, по ходу выполнения заданий и подготовки к экзамену – записывать затраченное время; После экзамена – добровольно и анонимно сообщить результаты. 38