Имитационное моделирование в исследовании и разработке информационных систем Лекция 3 Понятие модели Основные виды моделей Примеры аналитических моделей производительности Имитационное моделирование
Понятие модели Модель – это объект, заменяющий исходный объект в ходе достижения заданных целей и при заданных предположениях. Важные примеры цели моделирования: понимание; обучение; исследование (проектирование); замещение исходного объекта в составе некоторой системы; 2
Понятие модели (2) Модель – это всегда упрощение исходного объекта (имеются упрощающие предположения) (что-то отбрасываем и/или обобщаем); Модель должна быть адекватной объекту (для заданной цели применения); Использование модели должно быть проще использования исходного объекта См. также источник posob-zamyatina-1. pdf и другие учебные пособия 3
Виды моделей (1) Физические модели Натурные: эксперименты с реальным объектом или его частью; полунатурные: часть объекта заменена моделью; масштабные: глобус, макеты зданий, макеты в аэро(гидро)динамической трубе аналоговые: использование иных физических явлений с теми же законами Аналоговые выч машины: 4
Натурные модели: примеры Эксперимент над реальным объектом или его частью (в условиях, отличных от штатных условий эксплуатации) Бортовая цифровая вычислительная машина в «коммерческом» исполнении вместо «промышленного»
Полунатурные модели БЦВМ ОС РВ Функциональное ПО Модели бортовых приборов Среда выполнения моделей Linux с расширениями РВ x86 сервер Бортовой канал Натурный объект Стенд ПНМ
Масштабные модели
Продувка моделей летательных аппаратов в аэродинамических трубах 1) Принцип обращения движения; 2) Должны выполняться условия аэродинамического подобия, в том числе: Геометрическое подобие; Совпадение чисел Маха для модели и натурного объекта; Совпадение чисел Рейнольдса M = V / a; Re = V * l / ν V – скорость потока; a – скорость звука при конкретных условиях; l – размах крыльев; ν – коэффициент кинематической вязкости воздуха Подробности вне рамок курса, см., например, здесь pdf %8D%D1%80%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%BA%D0%B8%20%D0%B8%20%D0 %BB%D0%B5%D1%82%D0%BD%D0%BE- %D1%82%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5%20%D1%85%D0% B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8%20%D 0%B2%D0%BE%D0%B7%D0%B4%D1%83%D1%88%D0%BD%D1%8B%D1%85%20%D1%81%D1%83- %20%D0%B4%D0%BE%D0%B2,%20%D1%87%D0%B0%D1%81%D1%82%D1%8C%201.pdf
Модель и макет Макет – модель, предварительный образец (© Ожегов) Как правило, уменьшенное в масштабе представление объекта Как правило, при создании макета от внутреннего содержания абстрагируются Цель создания макета – как правило, оценка взаимодействия макетируемого объекта с окружением, а не «проникания внутрь»
Виды моделей (2) Знаковые –лингвистические (правила, кодексы …) –графикеские (схемы, чертежи) –математические Математические - по свойствам моделируемого объекта –структурные –функциональные 12 Доп. ссылки: [Замятина 2007], [Советов, Яковлев 2001]
Структурные модели Определяют: –Разбиение системы на компоненты –Связи между компонентами Используемые математические понятия –Иерархические древовидные модели –Графовые модели –Сетевые модели
Структурные модели (2) Важные примеры –Диаграммы классов UML –Диаграммы развёртывания UML 14
Важные примеры средств описания функциональных моделей Диаграммы потоков данных (DFD) Гейна-Сарсона {для бизнес- процессов} Блок-схемы, диаграммы последовательности UML; Диаграммы состояний (state transition diagrams) Диаграммы message sequence chart UML Системы массового обслуживания 15
Пример диаграммы состояний 16
Виды моделей (3) Математические функциональные: аналитические: построены явные математические зависимости результатов от входных данных; алгоритмические: построен алгоритм вычисления результатов по входным данным; имитационные: построен алгоритм, описывающий поведение объекта во времени с учётом входных воздействий во времени 17
Аналитические модели (примеры) Результат аналитического решения ДУ: s(t) = v 0 t + at 2 /2 Результаты обработки ранее сделанных измерений (209 систем – объём кэша, тактовая частота, количество каналов ввода-вывода, объём памяти) – 1987 г. Worst Case Execution Time (WCET) Модели производительности для параллельных программ
Аналитические модели (2) V – количество операций в программе; p – число процессоров (ядер); S(p) = t(1) / t(p) - ускорение Полное распараллеливание: S(p) = p Пусть α – доля последовательных вычислений Закон Амдаля (Amdahl) S(p) 1 / (α + (1-α)/p) 19
Более общая модель параллельных вычислений 20 Вершина – задача Вес вершины – время выполнения Ребро (стрелка) – зависимость по данным В одном ярусе – параллельно выполняемые задачи Критический путь длиной Vкр
Более общая модель (2) t(p) V / p + Vкр * (p-1)/p s(p) 1 / (1/p + Vкр/V * (p-1)/p) Конвейерные вычисления p – длина конвейера; V – длина вектора; T(p) = p + V – 1; t(1) = pV; a = p / (1 + (p-1)/V) 21
Имитационное моделирование Алгоритмические ММ выражают связи выходных параметров с параметрами внутренними и внешними в форме алгоритма Имитационная ММ - это алгоритмическая модель, отражающая поведение исследуемого объекта во времени при задании внешних воздействий на объект. (методические рекомендации Минобрнауки РФ; [Замятина 2007 ]) 22
Имитационное моделирование (2) Имитационная модель воспроизводит процесс функционирования системы во времени, причём имитируются элементарные явления, составляющие процесс, с сохранением их логической структуры и последовательности протекания во времени [Советов, Яковлев, с.34] 23
Простейшая имитационная модель Дано: часы со стрелками Определить: сколько раз минутная стрелка покрывает часовую за время с полудня до полуночи? 24
Простейшая имитационная модель (2) Предположения: стрелки имеют нулевую ширину Минутная стрелка поворачивается каждую секунду Часовая стрелка поворачивается на 1/12 поворота минутной каждую секунду
Простейшая имитационная модель ( 3 ) int count = 1; // число перекрытий; int time = 0; // время в секундах double phi_min = 0; // угол минутной стрелки в градусах; double phi_hr = 0; // угол часовой стрелки в градусах; // цикл моделирования while( time < 60*(59*12-1) ) { time++; // след. момент времени phi_min = phi_min + 0.1; // поворот минут. стрелки if( phi_min == 360 ) phi_min = 0; phi_hr = phi_hr + 0.1/12; // поворот часовой стрелки // проверка перекрытия // printf ( "hr = %F min = %F\n", phi_hr, phi_min ); if( fabs( phi_min - phi_hr) < 0.05 ){ count ++; printf( "hr = %F min = %F\n", phi_hr, phi_min ); } } printf ( "count = %d\n", count ); 26 Всё ли правильно?
Простейшая имитационная модель ( 4 ) int count = 1; // число перекрытий; int time = 0; // время в секундах double phi_min = 0; // угол минутной стрелки в градусах; double phi_hr = 0; // угол часовой стрелки в градусах; // цикл моделирования while( time < 60*( 59 *12-1) ) { time++; // след. момент времени phi_min = phi_min + 0.1; // поворот минут. стрелки if( fabs(phi_min - 360) < 0.01 ) phi_min = 0; phi_hr = phi_hr + 0.1/12; // поворот часовой стрелки // проверка перекрытия // printf ( "hr = %F min = %F\n", phi_hr, phi_min ); if( fabs( phi_min - phi_hr) < 0.05 ){ count ++; printf( "hr = %F min = %F\n", phi_hr, phi_min ); } } printf ( "count = %d\n", count ); 27
Простейшая имитационная модель (5) Предположение о нулевой толщине стрелок потребует нулевого шага по времени Сравнивать числа float (double) на точное равенство – опасно! Имитационная модель, в отличие от аналитической, может быть легко детализирована для стрелок произвольной ширины
Особенности ИМ По сравнению с аналитическими моделями: –универсальность применения (+); –результат для конкретного набора входных данных (-); По сравнению с «программами общего назначения»: «ТЗ формируется по ходу дела…» Необходимость поддержки понятий предметной области 29
30 ИМ по способам продвижения времени С постоянным шагом –Непрерывные модели –Потактовые модели От события к событию –Дискретно-событийные модели Гибридные модели –Совместная работа компонентов разного рода –Переключение режимов «непрерывного» компонента
Этапы создания ИМ (1) Анализ требований и проектирование –Постановка цели моделирования –Построение концептуальной модели –Проверка достоверности концептуальной модели Реализация модели –Выбор языка и средств моделирования –Программирование модели –Отладка модели 31
Этапы создания ИМ (2) Проведение экспериментов и анализ результатов –Планирование экспериментов –Прогон модели –Анализ результатов и выводы 32
Концептуальная модель 33 Как правило, знаковая (лингв. или график. модель) различной степени формализованности Построение – процесс неформальный, интуитивный Определяет структуру моделируемой системы, алгоритмы функционирования компонентов, их состояния, порядок взаимодействия, и т.д. Представляет собой решение по абстракции и упрощению исследуемой системы «техническое задание» на программирование имитационной модели
Пример моделируемой системы 34
Пример моделируемой системы (2) 35 Состав: –веб-клиенты на хосте h1 –веб-сервер на хосте h2 –Фрагмент сети Internet между h1 и h2 –Стек TCP/IP на h1 и h2 Цели: –исследовать зависимость очереди запросов к серверу от числа клиентов; –воспроизвести временную диаграмму работы системы на уровне состояния сервера и клиентов, очередей запросов
Параметры 36 Число клиентовN Длина i-го запроса j-го клиентаreql(i,j) Интервал между запросамиreqtime (i,j) Время прохождения стека на h1Stacktime1( l) Время прохождения стека на h2Stacktime2( l) Время прохождения сообщения в сетиNetwtime(l) Время подготовки ответаAnstime(I,j) Длина ответаAnsl(I,j)
Предположения Клиент генерирует следующий запрос через интервал времени после прихода ответа на предыдущий Первый запрос второго и последующих клиентов? Стек протоколов в каждый момент времени пропускает не более одного сообщения, прочие ставятся в очередь Сеть начинает передачу сообщения, получив его полностью. Аналогично, лишь полностью прошедшее через сеть сообщение передаётся стеку протоколов 37
Предположения (2) В сети возможна одновременная передача в обоих направлениях В каждом направлении может одновременно передаваться неограниченное число сообщений (вариант: ограниченное число – не более M) 38
Моделирование посредством планирования событий 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: …. } 39
40 Спасибо за внимание!