ComeçarComece de graça

Desenvolvendo um modelo de eventos discretos

Você foi convidado a desenvolver um modelo de eventos discretos para uma operação agrícola, a fim de ajudar a alocar recursos, aumentar a produtividade e identificar/eliminar gargalos.

Você ainda está discutindo com colegas os diferentes processos envolvidos e em que nível de detalhe eles devem ser representados no modelo. Assim, vocês concordaram que as informações serão reunidas em um dicionário chamado process_dict com a seguinte estrutura. A ideia é que esse dicionário seja atualizado conforme mais informações sobre os processos se tornem disponíveis.

process_dict = {
    "Process name 1":  <duration>,
    "Process name 2":  <duration>,
    ...
}

Vamos construir um modelo genérico de eventos discretos chamado discrete_model_farm() que consiga agendar qualquer número de eventos discretos definidos no dicionário.

Os argumentos de entrada do modelo são (nesta ordem):

  1. process_dict: Dicionário com informações sobre os processos
  2. simulation_time: Período de simulação

O tempo no modelo será medido em dias.

Este exercício faz parte do curso

Simulação de Eventos Discretos em Python

Ver curso

Instruções do exercício

  • Inicie as variáveis de estado do modelo, time (rastreia o tempo) e supply_chain (rastreia o número de ciclos), e defina-as como zero.
  • Defina a condição de término para que o modelo seja executado enquanto time for menor que simulation_time.
  • Adicione a duração do processo à variável de estado time.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

def discrete_model_farm(process_dict, simulation_time):
  # Initiate variables
  time = ____
  supply_chain = ____

  # Define ending condition
  while ____ < ____:

    supply_chain += 1
    process_names = list(process_dict.keys())

    for p in range(len(process_names)):
		  
      event_duration = process_dict[process_names[p]]
          
      # Add the process duration
      ____ += event_duration
      print(f"{process_names[p]}  (completed): time = {time}")
          
    print(f"COMPLETED: Production cycle #{supply_chain} | Time = {time} days")  
Editar e executar o código