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):
process_dict: Dicionário com informações sobre os processossimulation_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
Instruções do exercício
- Inicie as variáveis de estado do modelo,
time(rastreia o tempo) esupply_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
timefor menor quesimulation_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")