Лекция 4 (24.09.2015)

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