Русский     English

Aivika

Замечание: Aivika устарела сейчас и может быть заменена другим продуктом AivikaSim, который имеет значительно лучшую поддержку распределенного моделирования, например.

Aivika - это платформа, состоящая из программных библиотек для имитационного моделирования, вложенного моделирования и параллельного распределенного моделирования. Главным образом, она нацелена на дискретно-событийное моделирование, но также есть частичная поддержка системной динамики и агентного моделирования.

Айвика позволяет моделисту оперировать событиями, дискретными процессами, ресурсами, очередями, серверами, потоками транзактов и их обработчиками. Она позволяет одновременно как определять события и процессы, углубляясь в низкоуровневые детали поведения моделируемых сущностей, так и создавать высокоуровневые сети очередей декларативным способом. Все части платформы Айвики хорошо интегрированы между собой.

Идея очень проста. Мы представляем моделируемые активности как абстрактные вычисления, которые можно комбинировать или создавать из примитивов. В действительности, это имеет глубокую связь с функциональным программированием.

Платформа Айвика написана на языке программирования Haskell. Соответствующие библиотеки распространяются под лицензией BSD3. Установочные пакеты доступны через Hackage DB, тогда как исходный код открыт, и его можно найти на сайте GitHub.

Библиография

Есть статья на русском, опубликованная в трудах Седьмой всероссийской научно-практической конференции "Имитационное моделирование. Теория и практика" – "ИММОД-2015", которая состоялась 21-23 октября 2015 года в Москве, в ИПУ им. В.А.Трапезникова РАН:

Основная версия

Существует основная версия Айвики. Это общецелевая библиотека имитационного моделирования, подходящая для решения большинства задач. Она относительно быстрая и легкая в использовании при условии, что моделист имеет хорошие знания языка Haskell.

Есть документация в формате PDF, которая описывает метод, основное API, а также там приводятся некоторые примеры:

Также есть руководство для начинающих на английском языке:

Инструкции по установке находятся на странице Wiki:

Установочный пакет и исходный код могут быть найдены по следующим ссылкам:

Есть вспомогательные библиотеки, которые позволяют запускать имитационные эксперименты, сохранять результаты в файлах CSV и строить графики.

Обобщенная версия

Также существует обобщенная версия Айвики, основная идея которой и приложения которой описаны в следующей статье:

Установочный пакет и исходные коды доступны по следующим ссылкам:

Обобщенная версия подобна трансформеру, с помощью которого можно создавать общецелевые библиотеки имитационного моделирования для частных случаев вычислений с желаемыми свойствами, например, такими как возможность запускать вложенные имитации или возможность запускать параллельные распределенные имитации.

Эта версия использует высокоуровневые концепции языка программирования Haskell, такие как монадические трансформеры и семейства типов. Тем не менее, код практически такой же как в основной версии платформы, но типы и сигнатуры функций немного другие, более общие.

Вложенное моделирование

Есть модуль для обобщенной версии, который адаптирован для запуска вложенных имитаций в рамках дискретно-событийной модели.

Фактически, этот пакет предоставляет специализированное вычисление, которое может быть использовано в обобщенной версии Айвики, конструкторе общецелевых библиотек имитационного моделирования.

Чтобы предсказать будущее поведение модели, здесь мы можем создать столько ответвлений текущего состояния модели, сколько необходимо. Операция создания новой ветки относительно дешевая и быстрая. Мы можем запустить вложенные имитации, продвигая дальше их модельное время. Затем, основываясь на полученной информации, мы можем изменить текущее состояние модели и возобновить имитацию в "настоящем".

Параллельное распределенное моделирование

Существует другой модуль для обобщенной версии Айвики, но который на этот раз адаптирован для запуска параллельных распределенных имитаций в рамках дискретно-событийной модели. Он предназначен для запуска имитаций на кластере или суперкомпьютере.

Как и прежде, этот пакет предоставляет специализированное вычисление, которое может быть использовано в обобщенной версии Айвики, конструкторе общецелевых библиотек имитационного моделирования.

Здесь узлы кластера могут обмениваться друг с другом, посылая и принимая асинхронные сообщения, привязанные к временным меткам. Реализована оптимистичная стратегия на основе идей метода деформации времени (англ. time warp). После получения просроченного сообщения происходит прозрачный откат. Откаты могут быть каскадными, охватывающими многие узлы кластера.

Версия содержит экспериментальный механизм синхронизации глобального времени. Также есть защитные механизмы от перегрузки. Существуют разные параметры, которые позволяют настроить библиотеку.

Вложенные имитации внутри решетки

Также есть модуль для запуска вложенных имитаций дискретно событийной модели внутри решетки (англ. lattice).

Ключевая особенность заключается в том, что число узлов решетки имеет квадратичную зависимость от размера решетки. Другими словами, обход узлов решетки имеет квадратичную сложность, что делает его вычислительно достижимой задачей даже для решеток большого размера.

Здесь мы можем обновлять изменяемые ссылки внутри дискретно-событийной модели. Это часть модели с прямым порядком обхода, где будущее значение каждой ссылки строго зависит от прошлого. За ссылками можно наблюдать из другой части модели, где мы можем проводить оценки. Оценивающая часть может иметь обратный порядок обхода, где оценка прошлого может зависеть от оценок будущего. Обход осуществляется по узлам решетки.

Этот пакет экспериментальный. Его главной целью было проверить концепцию. Он также основан на обобщенной версии Айвики.