SimPy: Simulação em Python
SimPy: Simulação em Python
Um guia prático
Sobre o Livro
A obra SimPy: Simulação em Python apresenta a biblioteca SimPy para construção de modelos de simulação de eventos discretos em Python.
Ao longo dos seus capítulos, são apresentados os conceitos fundamentais da biblioteca, seus principais comandos por meio de exemplos e, ao final de cada capítulo, são propostos exercícios práticos resolvidos na forma de desafios e exercícios adicionais para que o leitor teste seu conhecimento.
Além dos fundamentos da biblioteca, a obra também apresenta alguns tópicos avançados, tais como: simulação de agentes e otimização e simulação.
Sumário
- 1See me, Fell me, README
- 2Apresentação
- 2.1Por que utilizar o SimPy?
- 2.2Prós e contras
- 2.3Um breve histórico do SimPy
- 2.4Onde procurar ajuda sobre o SimPy
- 2.5Como utilizar este livro
- 3Instalando o SimPy
- 3.1Passo 1: Anaconda, the easy way
- 3.2Passo 2: Instalando o Pip (para quem não instalou o Anaconda)
- 3.3Passo 3: Instalando o SimPy
- 3.4Passo 4: Instalando algum Ambiente Integrado de Desenvolvimento (IDE)
- 4Tudo depende do Python
- 4.1Teste seus conhecimentos em Python: o problema da ruína do apostador
- 4.2Desafios
- 4.3Solução do desafio 1
- 4.4Teste seus conhecimentos
- 5Primeiros passos em SimPy: criando entidades
- 5.1Chamada das bibliotecas random e simpy
- 5.2Criando um environment de simulação
- 5.3Criando um gerador de chegadas dentro do environment
- 5.4Criando intervalos de tempo de espera com env.timeout(tempo_de_espera)
- 5.5Executando o modelo por um tempo determinado com env.run(until=tempo_de_simulacao)
- 5.6Conceitos desta seção
- 5.7Desafios
- 5.8Solução dos desafios 2 e 3
- 5.9Teste seus conhecimentos
- 6Criando, ocupando e desocupando recursos
- 6.1Criando
- 6.2Ocupando
- 6.3Desocupando
- 6.4Status do recurso
- 6.5Conceitos desta seção
- 7Juntando tudo em um exemplo: a fila M/M/1
- 7.1Geração de chegadas de entidades
- 7.2Realizando o atendimento no servidor
- 7.3Uma representação alternativa para a ocupação e desocupação de recursos
- 7.4Conceitos desta seção
- 7.5Desafios
- 7.6Solução dos desafios 4, 5 e 6
- 7.7Teste seus conhecimentos
- 8Atributos e variáveis: diferenças em SimPy
- 8.1Atributos em modelos orientados ao objeto
- 8.2Conceitos desta seção
- 8.3Desafios
- 8.4Solução dos desafios 7 e 8
- 8.5Teste seus conhecimentos
- 9Environments: controlando a simulação
- 9.1Controle de execução com env.run(until=fim_da_simulação)
- 9.2Parada por execução de todos os processos programados
- 9.3Parada por fim de execução de processo específico por env.run(until=processo)
- 9.4Simulação passo a passo: peek & step
- 9.5Conceitos desta seção
- 9.6Desafios
- 9.7Solução dos desafios 9 e 10
- 10Outros tipos de recursos: com prioridade e preemptivos
- 10.1Recursos com prioridade: PriorityResource
- 10.2Recursos que podem ser interrompidos: PreemptiveResource
- 10.3Conceitos desta seção
- 10.4Desafios
- 10.5Solução dos desafios 11 e 12
- 11Interrupções de processos: simpy.Interrupt
- 11.1Criando quebras de equipamento
- 11.2Interrompendo um processo sem captura por try…except
- 11.3Conceitos desta seção
- 11.4Desafios
- 11.5Solução dos desafios 13 e 14
- 11.6Teste seus conhecimentos
- 12Armazenagem e seleção de objetos específicos com Store, FilterStore e PriorityStore
- 12.1Construindo um conjunto de objetos com Store
- 12.2Selecionando um objeto específico com FilterStore()
- 12.3Criando um Store com prioridade: PriorityStore
- 12.4Conceitos desta seção
- 12.5Desafios
- 12.6Solução dos desafios 15 e 16
- 12.7Teste seus conhecimentos
- 13Enchendo ou esvaziando caixas, tanques, estoques ou objetos com Container()
- 13.1Enchendo o meu container yield meuContainer.put(quantidade)
- 13.2Esvaziando o meu container: yield meuContainer.get(quantidade)
- 13.3Criando um sensor para o nível atual do container
- 13.4Conceitos desta seção
- 13.5Desafios
- 13.6Solução dos desafios 17 e 18
- 13.7Teste seus conhecimentos
- 14Criando lotes (ou agrupando) entidades durante a simulação
- 14.1Uma tática para agrupamento de lotes utilizando o Container
- 14.2Agrupando lotes por atributo da entidade utilizando o FilterStore
- 14.3Desafios
- 14.4Solução dos desafios 19 e 20
- 14.5Teste seus conhecimentos
- 15Criando, manipulando e disparando eventos com event()
- 15.1Criando um evento isolado com event()
- 15.2Conceitos desta seção
- 15.3Desafios
- 15.4Solução dos desafios 21 e 22
- 15.5Teste seus conhecimentos
- 16Aguardando múltiplos eventos ao mesmo tempo com AnyOf e AllOf
- 16.1Aguardando até que, ao menos, um evento termine com AnyOf
- 16.2Aguardando todos os eventos com AllOf
- 16.3Comprendendo melhor as saídas dos comandos AllOf e AnyOf
- 16.4Conceitos desta seção
- 16.5Desafios
- 16.6Solução dos desafios 23 e 24
- 16.7Teste seus conhecimentos
- 17Propriedades úteis dos eventos
- 17.1Conceitos desta seção
- 17.2Desafios
- 17.3Solução do desafio 25
- 17.4Teste seus conhecimentos
- 18Adicionando callbacks aos eventos
- 18.1Todo processo é um evento
- 18.2Conceitos desta seção
- 18.3Desafios
- 18.4Solução do desafio 26
- 18.5Teste seus conhecimentos
- 19Interrupções de eventos
- 19.1Interrompendo um evento com o método interrupt
- 19.2Interrompendo um evento com o método fail
- 20O que são funções geradoras? (ou como funciona o SimPy) - Parte I
- 20.1Iterador
- 20.2Funções geradoras
- 21O que são funções geradoras? (ou como funciona o SimPy?) - Parte II
- 21.1SimPy vs. funções geradoras
- 22Simulação Baseada em Agentes usando o SimPy
- 22.1Como construir um modelo de simulação de agentes: passos básicos
- 22.2Modelo epidêmico baseado em agentes: o modelo SIR
- 22.3Modelagem do problema no SimPy
- 22.4Melhorando o desempenho do código de simulação
- 22.5Como seguir a partir daqui
- 22.6Conceitos desta seção
- 22.7Desafios
- 22.8Solução dos Desafios 27 e 28
- 22.9Teste seus conhecimentos
Outros livros deste autor
A garantia Leanpub incondicional, sem riscos, de 100% de satisfação
Durante 60 dias da data de compra você pode solicitar o reembolso total de qualquer compra Leanpub, em dois cliques. Nós processamos os reembolsos manualmente, então eles podem demorar alguns dias para aparecer. Veja os termos completos.
Ganhe $8 em uma compra de $10 e $16 em uma compra de $20
Pagamos 80% de royalties em compras de $7,99 ou mais e 80% de royalties menos uma taxa fixa de 50 centavos em compras entre $0,99 e $7,98. Você ganha $8 em uma venda de $10 e $16 em uma venda de $20. Portanto, se vendermos 5000 cópias não reembolsadas do seu livro por $20, você ganhará $80,000.
(Sim, alguns autores já ganharam muito mais do que isso no Leanpub.)
Na verdade, os autores ganharammais de 13 milhões de dólares escrevendo, publicando e vendendo no Leanpub.
Saiba mais sobre escrever no Leanpub
Atualizações grauitas. Sem DRM.
Se você compra um livro da Leanpub, você recebe atualizações gratuitas enquanto o autor atualizar o livro! Muitos autores utilizam a Leanpub para publicar os seus livros em andamento, enquanto eles estão os escrevendo. Todos os leitores recebem atualizações gratuitas, não importa quando ou por quanto eles compraram o livro (até mesmo de graça).
A maioria dos livros Leanpub estão disponíveis em PDF (para computadores) e EPUB (para telefones, tablets, e Kindle). Os formatos que um livro inclui são exibidos no top direito dessa página.
Por último, livros Leapub não têm nenhuma proteção anti-cópias DRM sem sentido, então você pode facilmente lê-los em qualquer dispositivo suportado.
Aprenda mais sobre os formatos de ebook da Leanpub e aonde lê-los