Русский     English

Aivika

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

Открыть документацию в PDF (черновик)

Просто создавать тренажеры

Вы можете создать тренажер, где вы можете определить модель и ее имитацию на языке Haskell, а затем создать десктопное приложение или веб-приложение на языках C++, C# или Java так, что приложение запросит параметры, запустит имитацию, а потом покажет результаты моделирования клиенту.

Example

Имитационные эксперименты на основе метода Монте-Карло

Вы можете запустить численный эксперимент на основе метода Монте-Карло, чтобы провести анализ чувствительности модели к внешним параметрам. Aivika может создавать графики и гистограммы, сохранять результаты в файлах CSV, собирать сводную статистику, представлять визуальные результаты в виде файлов HTML. Тысячи имитационных запусков могут быть запущены параллельно, насколько возможно.

Вы можете увидеть это в следующем демонстрационном примере с графиками.

Единый подход для последовательной, вложенной и распределенной имитации

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

Много-методные и общего назначения

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

Оптимизированная последовательная имитация

Основная версия Aivika оптимизирована для последовательного исполнения, и она может быть достаточна для большинства случаев использования. Она довольно быстрая и простая в использовании.

Оптимистичная распределенная имитация

Распределенная версия Aivika медленнее до 12-30 раз основной последовательной версии на эквивалентных последовательных моделях, где нижняя оценка в 12 раз, скорее всего, будет соответствовать большинству моделей. Это совсем не значит, что любая распределенная имитация будет иметь такую скорость, потому что передача сообщений понижает скорость имитации, а иногда существенно замедляет ее, если возникает много откатов. Но эта грубая оценка показывает, что ваша распределенная модель может быть быстрее последовательной, если правильно использовать современные многоядерные и многопроцессорные компьютерные системы, особенно если они построены на основе таких процессоров, как Intel Core X, который может иметь 36 ядер. Более того, есть задачи, которые могут быть решены только через использование многокомпьютерных систем, поскольку эти задачи требуют слишком много памяти для представления модели.

Восстановление распределенной имитации

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

Вы можете проверить это сами, запустив следующий тест распределенной имитации.

GPSS-подобный предметно-ориентированный язык

Также существует модуль, который поддерживает GPSS-подобный встроенный предметно-ориентированный язык, который может быть полезен, если вы собираетесь перенести ваши модели GPSS в Aivika. Этот язык не эквивалентен полностью, но довольно близок к оригинальному языку GPSS. Так, поддерживается большинство моделирующих блоков, таких как PREEMPT и даже GATHER.

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