Русский     English

AivikaSoft

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

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

Например, дискретные процессы – это первый кандидат, чтобы быть выраженным как вычисление.

 let machine :: Process ()
     machine =
       do upTime <-
            randomExponentialProcess meanUpTime
          liftEvent $
            modifyRef totalUpTime (+ upTime)

          -- check the resource availability
          liftEvent $
            do modifyRef nRep (+ 1)
               n <- resourceCount repairPerson
               when (n == 1) $
                 modifyRef nImmedRep (+ 1)

          requestResource repairPerson
          repairTime <-
            randomExponentialProcess meanRepairTime
          releaseResource repairPerson

          machine

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