Combinando processos determinísticos e não determinísticos

Simulação de Eventos Discretos em Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Processos determinísticos e não determinísticos

Diagrama mostrando a sequência de processos de um sistema. Começa com um processo determinístico, Processo A, seguido por um processo não determinístico, Processo B, e termina com outro determinístico, Processo C.

Exemplo: Gestão do fluxo de passageiros em aeroportos

  • Não determinístico: Hora em que o passageiro chega ao aeroporto
  • Determinístico: Transporte da bagagem dentro do aeroporto após o check-in
Simulação de Eventos Discretos em Python

Exemplo: Linha de montagem em uma fábrica

Processos determinísticos

  • Transporte de matéria-prima para a fábrica
  • Etapas totalmente automatizadas
  • Inspeções de qualidade
  • Embalagem
  • Transporte do novo produto aos clientes

Exemplo: Máquina de solda

Tempo de processamento = Comprimento da linha de solda x Velocidade da máquina de solda

Processos não determinísticos

  • Pedido de matéria-prima
  • Montagem manual de peças complexas

Gráfico de dispersão mostrando a duração de uma montagem manual específica repetida várias vezes.

Simulação de Eventos Discretos em Python

Processos determinísticos

Exemplo: Linha de montagem com solda

  • 2 processos determinísticos
    welding_1

welding_2

  • welding_1

    • Nome do processo: Welding component A

    • Tempo de processamento: 5 horas

  • welding_2
    • Nome do processo: Welding component B
    • Tempo de processamento: length * hours_per_length

Criando um dictionary para cada processo:

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
Simulação de Eventos Discretos em Python

Processos não determinísticos

Exemplo: A linha de montagem

  • 2 processos não determinísticos manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Nome do processo: Manual Assembly A
    • Tempo médio de processamento: 80 horas

    • Desvio padrão: 5 horas

  • manual_assembly_2
    • Nome do processo: Manual Assembly B"
    • Tempo médio de processamento: 20 horas
  • Desvio padrão: 2 horas

Criando um dictionary para cada processo:

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
Simulação de Eventos Discretos em Python

Construa uma simulação baseada em eventos

Sequência de processos de manufatura Diagrama mostrando a sequência de processos de uma atividade de manufatura, incluindo, em ordem cronológica: welding_1, manual_assembly_1, manual_assembly_2 e welding_2.

Modelo de eventos discretos

# Initiate time-tracking variable
time = numpy.zeros(number_of_processes)

# Next-event time progression time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
Simulação de Eventos Discretos em Python

Unidades de tempo e exploração do modelo

  • Unidades de tempo
    • Garanta que as unidades de tempo sejam consistentes em todos os processos.
Simulação de Eventos Discretos em Python

Vamos praticar!

Simulação de Eventos Discretos em Python

Preparing Video For Download...