Tendo introduzido o salabim para simulação de eventos discretos ( DES ) em Python, quero acompanhar sua funcionalidade relacionada às estatísticas. Faço isso no post de hoje: Stats with salabim !
Simulação de eventos discretos, job shop e Python
A simulação de eventos discretos é um dos vários métodos de simulação aplicáveis por analistas de SCM, planejadores de produção e analistas de pesquisa operacional. O gráfico abaixo fornece uma categorização aproximada desses métodos de simulação .
A simulação de eventos discretos é aplicada principalmente para objetivos operacionais e detalhados, como, por exemplo, planejamento de produção, projeto de fábrica ou projeto e melhoria de processos de negócios. É o método apropriado para sistemas complexos bem descritos por eventos sequenciais e filas. Aqui estão alguns exemplos de casos de uso de simulação que você pode ler para começar:
- Link : Simulação de mina a céu aberto para melhor planejamento
- Link : Simulador de estacionamento com ferver em R
- Link : Simulação ponta a ponta da cadeia de suprimentos de aves
Uma job shop, por exemplo, é um sistema que pode se beneficiar da simulação de eventos discretos para seu projeto e/ou melhoria contínua.
Simulação e estatísticas de job shop com salabim
Abaixo, o código Python implementa um modelo de simulação de job shop em Python usando salabim . Eu usei esse exemplo simples em postagens anteriores do blog. Neste caso, estamos modelando um job shop simplificado com 2 máquinas e 100 jobs. Os trabalhos podem ser processados em qualquer máquina, mas apenas por uma máquina por vez. As máquinas processam tarefas com um tempo de processamento especificado (duração). As máquinas, neste caso, têm uma capacidade de 1. Depois que uma máquina processa um trabalho, ela é concluída. A programação de produção, neste caso, é simplificada até certo ponto e modelada por um gerador de tarefas aleatórias. O gerador de tarefas cria novas tarefas em intervalos distribuídos aleatoriamente com um tempo médio especificado entre as tarefas. O código implementa estatísticas animadas, além de implementação de modelo e execução de simulação.
A primeira parte importa salabim e configura constantes, bem como tipos de dados relevantes (classe Produto). Produto estende a classe de componentes salabim . Ele implementa um método de processo. Este método é usado para solicitar e manter um recurso , por um período especificado .
import salabim as sim
SEED = 42
MACHINES = 2 # amount of machines
INTERVAL = 3 # mean time between two jobs
DURATION = 5.0 # mean processing time of a job
JOBS = 100 # number of jobs that have to be completed
class Product(sim.Component):
def process(self):
yield self.request(machines)
print(f"{self.name()} started at time {env.now()}")
yield self.hold(DURATION)
print(f"{self.name()} completed at time {env.now()}")
A próxima parte configura o ambiente de simulação e define os recursos. A fonte da peça, ou seja, o gerador de componentes, também é definida nesta seção:
env = sim.Environment(random_seed=SEED)
machines = sim.Resource("machines", capacity=MACHINES)
sim.ComponentGenerator(Product, iat=sim.Exponential(INTERVAL), force_at=True, number=JOBS)
Por fim, a execução da simulação e a animação são implementadas.
env.animate(True)
env.modelname("jobshop demonstration")
machines.claimers().animate(x=700, y=100, title="work in progress", direction="e")
machines.requesters().animate(x=200, y=100, title="work waiting", direction="e")
machines.claimers().length.animate(x=10, y=300, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work in prgress")
machines.requesters().length.animate(x=10, y=500, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work waiting")
env.speed(5)
env.run(100)
Isso resulta em uma animação. A imagem abaixo mostra um instantâneo da animação.
A animação mostra o trabalho em andamento e o backlog/trabalho em espera ao longo do tempo.
Conteúdo Relacionado
Se você estiver interessado em simulação de eventos discretos e suas aplicações, ou suas implementações específicas em, por exemplo, R, AnyLogic, VisualComponents e Python, confira as seguintes publicações do SCDA:
- Link : Casos de uso de simulação de eventos discretos (DES)
- Link : Lista de software de simulação de eventos discretos
- Link : Métodos de simulação para analistas de SCM
- Link : Modelo de procedimento de simulação de eventos discretos
- Link : Simulação de inspeção de recebimento com ferver
- Link : Visualizando a simulação de job shop do SimPy
- Link : Simmer em R para simulação de eventos discretos
- Link : Simulação de pátio de guindaste em AnyLogic
- Link : Simulação de transportador em AnyLogic
- Link : Simulação de KPI financeiro de componentes visuais
Cientista de dados com foco em simulação, otimização e modelagem em R, SQL, VBA e Python
Leave a Reply