SimPy: Um Framework de Simulação de Eventos Discretos
SimPy é um poderoso framework de simulação de eventos discretos baseado no padrão Python. Ele permite modelar processos através de funções geradoras em Python, podendo representar componentes ativos como clientes, veículos ou agentes. Além disso, fornece vários tipos de recursos compartilhados para modelar pontos de congestionamento de capacidade limitada, como servidores, caixas de checkout e túneis.
As simulações podem ser realizadas 'o mais rápido possível', em tempo real (tempo do relógio da parede) ou manualmente avançando pelos eventos. Embora seja teoricamente possível fazer simulações contínuas com o SimPy, ele não possui recursos específicos para isso. Por outro lado, o SimPy é excessivo para simulações com tamanho de passo fixo onde os processos não interagem uns com os outros ou com recursos compartilhados.
Um exemplo breve de simulação de dois relógios batendo em intervalos de tempo diferentes é o seguinte:
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))
env.process(clock(env, 'slow', 1))
env.run(until=2)
A documentação do SimPy inclui um tutorial, vários guias explicando conceitos chave, vários exemplos e a referência da API. O SimPy é lançado sob a Licença MIT. Os desenvolvedores de modelos de simulação são encorajados a compartilhar suas técnicas de modelagem SimPy com a comunidade SimPy. É possível postar uma mensagem na lista de discussão do SimPy.
Há também uma palestra introdutória que explica os conceitos do SimPy e fornece alguns exemplos: assista ao vídeo ou obtenha os slides. Além disso, o SimPy foi reimplementado em outras linguagens de programação. Consulte a lista de portas para mais detalhes.