суббота, 7 июля 2012 г.

Порт библиотеки Айвика на язык Scala


После полугода раздумий решил выложить новый порт своей библиотеки имитационного моделирования Айвика. Теперь языком реализации является Scala. Это значит, что можно использовать Java в имитационных моделях. Лицензия - BSD3.

https://github.com/dsorokin/scala-aivika

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

Здесь так же как в F# легко задавать обыкновенные дифференциальные уравнения, что позволяет красиво и просто строить модели системной динамики. Процессы же дискретно-событийных моделей задаются с помощью продолжений. Через объекты задаются агенты и их состояния. Все это вместе работает на основе единой достаточно простой схемы.

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