SimPy
| SymPy | |
|---|---|
| | |
| Тип | фреймворк, процессо-ориентированная дискретно-событийная система моделирования |
| Авторы | Klaus G. Müller, Tony Vignaux |
| Разработчики | Ontje Lünsdorf, Stefan Scherfke |
| Написана на | Python |
| Операционная система | Кроссплатформенная |
| Дата выпуска | 17 сентября 2002 |
| Последняя версия | 4.1.1 (12 ноября 2023) |
| Репозиторий | gitlab.com/team-simpy/si… |
| Лицензия | MIT |
| Сайт | simpy.readthedocs.org |
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 моделирования:[1] часовой процесс, который выводит текущее модельное время на каждом шаге:
>>> 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
Ссылки
- ↑ Scherfke, Стефан (25 Июля 2014).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.