Имитационное моделирование как инструмент прогнозирования и аналитики
Довольно часто перед инженерами и аналитиками встаёт задача спрогнозировать поведение той или иной системы при определённых условиях. Это даёт возможность провести системный анализ, выявить «тонкие места», выбрать оптимальные режимы управления и т.д. Зачастую речь идёт о сложной системе с большим количеством взаимосвязей между её элементами и подсистемами, а также с большим количеством внешних факторов. Для решения подобных задач используют модели.
Имитационная модель — компьютерная программа, описывающая структуру и поведение реальной системы. Она позволяет как бы «проиграть» реальные процессы в убыстренной перемотке.
Системы массового обслуживания
Модель «Парикмахерская»
Классическим примером для изучения имитационного моделирования является модель «Парикмахерская».
Всё очень просто: в системе есть один парикмахер, который стрижёт постепенно приходящих клиентов.
Чтобы построить модель, нам понадобятся некоторые статистические данные:
- интервалы времени, через которые в систему приходят клиенты.
Эти интервалы могут отличаться в разные временные промежутки. Например, вечером, когда люди возвращаются с работы, интервалы будут меньше чем днём и т.д. В любом случае для составления модели должна быть собрана такая статистика посещаемости, которую потом необходимо заложить в модель в виде математических зависимостей.
- время обслуживания клиента.
Необходимо также набрать статистику: сколько времени уходит у парикмахера на обслуживание клиента.
Таким образом, на первом этапе составления имитационной модели необходимо собрать статистические данные, обработать их и выявить законы распределения вероятностей для всех событий, которые можно в какой-то мере считать случайными. Допустим, мы выяснили, что для времени обслуживания клиента будет действовать закон нормального распределения с математическим ожиданием 30 минут:
На следующем этапе нам нужно определить все ресурсы системы.
Ресурс – любой объект, за который в системе ведётся борьба. Другими словами, это то, чего может не хватать. В нашем случае парикмахер это ресурс, потому что он один, а клиентов много. Допустим, в системе два парикмахера: ножницы у каждого из них свои, поэтому это не ресурс, а вот фен один на двоих — и это уже ресурс. Понятие ресурса неразрывно связано с понятием очереди.
Очередь — образуется при борьбе за ресурсы в системе. Размеры очереди могут быть ограничены. Например, в нашем случае парикмахер не сможет обслужить бесконечно много посетителей за рабочий день. Размер очереди – это тоже параметр системы, который можно менять. В результате моделирования может выясниться, например, что в 10% рабочих дней в очереди остаются не обслуженные клиенты, крайне недовольные этим фактом. В лучшем случае такие клиенты больше не придут, а в худшем отговорят и своих знакомых. Тогда, чтобы не терять клиентов, необходимо уменьшить размер очереди.
Транзакты – это элементарные единицы, объекты, с которыми работает система. В нашем случае – это клиенты парикмахерской, в модели завода – это заготовки деталей ну и т.д. Транзакты могут захватывать и освобождать ресурсы, меня их статус со «свободен» на «занят» и наоборот.
В конечном итоге система должна быть представлена с использованием рассмотренных выше понятий и в таком виде перенесена в среду имитационного моделирования.
Вот так можно упрощённо представить нашу систему в среде Arena. В каждом блоке задаются необходимые параметры. На рисунке выше представлен «снимок» системы после 54 ч. работы. За это время систему посетило 42 клиента, из которых: 36 были обслужены и ушли, один обслужен и направляется к выходу, ещё одного стригут и четверо сидят в очереди.
Языки моделирования (GPSS, RDO, Arena)
Кроме ‘Arena’ существует огромное количество сред и языков моделирования. Они могут быть основаны на разных подходах или комбинировать их. О различных парадигмах имитационного моделирования речь пойдёт чуть ниже. Стоит заметить, что любой уважающий себя профессионал в этой области должен знать язык GPSS . Это своего рода «азбука», которая объединяет все подходы к моделированию. Например, модель «парикмахерская» на языке GPSS выглядит так:
10 GENERATE 40±10 //—Клиенты приходят раз в 40 минут ± 10 минут
20 SEIZE 1 //—Один транзакт (клиент) «захватывает» парикмахера
30 ADVANCE 30±5 //—Продвигает время моделирования на 30 ± 5 минут (обслуживание)
40 RELEAZE 1 //—Транзакт «освобождает» ресурс (парикмахера)
50 TERMINATE //—Клиент уходит из системы
Что в итоге?
После остановки модели по критерию останова (вручную, по истечении заданного времени, после обслуживания N клиентов и т.д.) система выдаст подробный отчёт со всеми внутренними параметрами во время её работы: средняя, максимальная и минимальная длины очереди, загрузка парикмахера, время ожидания в очереди и многие другие. Если задать закон распределения стоимости обслуживания, можно подсчитать итоговую прибыль и т.д.
На основании этих параметров можно производить анализ системы, принимать управленческие решения. Например, если мало клиентов в дневные часы и парикмахер простаивает — можно снизить стоимость обслуживания в это время, а в часы пик можно привлекать к работе второго парикмахера, чтобы не терять клиентов. После принятия соответствующих решений (и изменения модели в соответствии с ними) можно «прогнать» модель заново и увидеть, как изменилась прибыль.
Оптимизация поиска решений
Выбор оптимальных управленческих решений может потребовать много времени. Даже в нашей простейшей модели много параметров, которые можно варьировать. В сложных системах таких параметров в десятки раз больше, поэтому подбор оптимальных решений можно переложить, например, на генетический алгоритм. О связке «генетический алгоритм – имитационная модель» уже говорилось в одной из предыдущих статей, поэтому здесь приведём только общую схему.
Проверка модели на адекватность
При разработке модели невозможно учесть всех мелочей, да этого и не нужно. Например, количество человек в очереди в парикмахерскую может иметь значение, если поблизости есть еще одна парикмахерская и посетитель, увидев большую очередь, может пойти туда. В этом случае необходимо ввести в модель статистические данные по уходам людей из парикмахерской при наличии большой очереди. Но в другом случае, когда парикмахерских поблизости нет, параметр «количество человек в очереди» может не играть никакой роли.
Исходя из вышесказанного, после того, как модель готова, то есть её структура изучена, выявлены все «важные» параметры, статистические зависимости и она представлена в виде компьютерной программы, необходимы ещё два этапа, чтобы начать использовать эту модель. Вы, наверное, уже догадались, для чего нужны эти этапы? Правильно, чтобы проверить, что модель адекватна, то есть ведёт себя так же как система. Эти два этапа: верификация и валидация, и они должны проводиться именно в этой последовательности.
Верификация модели
На этом этапе модель проверяется на правильность её структуры, всех взаимосвязей и зависимостей. Для этого приглашаются люди, которые так или иначе соприкасаются с реальной системой, для того чтобы они попытались выявить какие-то недоработки и несоответствия модели и реальной системы. Кроме того, на вход модели подаются различные единичные воздействия с известным откликом, и проверяется, что отклики модели совпадают с откликами реальной системы.
Валидация модели
На этом этапе проверяется, что результаты, которые выдаёт модель, соответствуют реальности. Например, можно «прогнать» модель, взяв за входные данные реальные параметры за прошлый месяц и сравнить результаты, выданные моделью, с известной статистикой работы парикмахерской. Если модель не проходит валидацию, значит не все закономерности и зависимости выявлены точно, имеется ошибка в структуре или упущены из виду важные влияющие факторы — необходимо вернуться на этап верификации.
Подходы к моделированию
Существует несколько подходов к имитационному моделированию. С первым мы уже познакомились на примере модели «Парикмахерская». Этот подход называется «дискретно-событийный».
Дискретно-событийное моделирование
Эта парадигма основана на представлении системы в виде цепи отдельных взаимосвязанных событий. В нашем примере это: приход клиента, «захват» парикмахера, стрижка, «освобождение» парикмахера, уход клиента. Нам, например, совершенно не важно, как происходит стрижка, для нас это просто событие, продвигающее время моделирования на 30±5 минут. Этот подход наиболее распространён. Он используется для создания моделей систем, которые хорошо описываются с помощью цепи событий. Это могут быть завод, бизнес-центр, системы массового обслуживания (к числу которых относится парикмахерская).
Агентное моделирование
В данном подходе система рассматривается как совокупность её участников. Единицей модели является агент – сущность, для которой заданы её свойства и характеристики, поведение, отношения к другим агентам и т.д. Агенты могут быть разных типов, выполнять разные функции, иметь собственные ресурсы, модели поведения и даже характер. Таким способом довольно удобно моделировать сообщества людей или других живых организмов. Например, так можно смоделировать муравейник. Но агенты в модели не обязательно живые существа, это могут быть города, фирмы, компании, активы и т.д. Так, например, можно представить модель рынка, где агенты – это все его участники от крупных компаний до простых потребителей, каждый из которых имеет свои ресурсы, цели, интересы, отношения с другими агентами.
Системная динамика
Это парадигма имитационного моделирования с достаточно высоким уровнем абстракции. Система рассматривается с точки зрения глобальных сущностей и явлений и правил их взаимодействия. Такая модель похожа на то, что появляется на доске во время «мозгового штурма», когда рисуются крупные квадраты, представляющие элементы системы и стрелками показываются взаимосвязи между ними. Такой способ моделирования наилучшим образом показывает динамику развития сложной системы, позволяет смоделировать стратегии управления и взаимодействия.
Смешанный подход
При создании модели могут также использоваться несколько из вышеперечисленных подходов. Комбинирование различных парадигм моделирования позволяет создавать более точные модели, применяя каждый конкретный подход для моделирования той части системы, где он наиболее удобен и подходит наилучшим образом.
Где это пригодится?
Кроме моделирования бизнес-процессов, систем массового обслуживание, рынков, логистики имитационное моделирование используется в таких задачах как создание моделей боевых действий, информационная безопасность, моделирование экосистем, прогнозирование развития эпидемий и многих других.






Добавить комментарий