SimPy — Python фреймворк процессо-ориентированной дискретно-событийной системы моделирования. Его диспетчеры событий основаны на функциях-генераторах Python.
Также они могут использоваться для создания асинхронных сетей или для реализации мультиагентных систем (с как моделируемым, так и реальным взаимодействием).
Процессы в SimPy — это просто Python генераторы, которые используются для моделирования активных компонентов, например, таких как покупатели, транспортные средства или агенты. SimPy также обеспечивает различные виды общих ресурсов для моделирования точек с ограниченной пропускной способностью (например, серверов, касс, тоннелей). Начиная с версии 3.1, SimPy также будет обеспечить возможности мониторинга для помощи в сборе статистических данных о ресурсах и процессах.
Моделирование может выполняться в режиме «as fast as possible», в режиме реального времени (wall clock time) или в режиме ручного выполнения событий.
Теоретически, в SimPy можно сделать непрерывную симуляцию, но фактически это не осуществимо. Однако, в случае моделирования с шагом фиксированного размера, где процессы не взаимодействуют с друг с другом или с общими ресурсами, может использоваться простой цикл while.
SimPy распространяется с руководством, подробной документацией и большим количеством примеров.
SimPy выпущен как open source проект под лицензией MIT. Первая версия была выпущена в декабре 2002 года.
Пример Одна из главных целей SimPy — простота в использовании. Вот пример простого SimPy моделирования:Scherfke, Стефан (25 Июля 2014). часовой процесс, который выводит текущее модельное время на каждом шаге:>>> import simpy >>> >>> def clock(env, name, tick): ... while True: ... print(name, env.now) ... yield env.timeout(tick) ... >>> env = simpy.Environment() >>> env.process(clock(env, 'fast', 0.5)) <Process(clock) object at 0x...> >>> env.process(clock(env, 'slow', 1)) <Process(clock) object at 0x...> >>> env.run(until=2) fast 0 slow 0 fast 0.5 slow 1 fast 1.0 fast 1.5
Ссылки
Категория:Кроссплатформенное программное обеспечение Категория:Библиотеки Python