НачатьНачать бесплатно

Разработка дискретно-событийной модели

Вам поручено разработать дискретно-событийную модель для сельскохозяйственного предприятия, чтобы помочь с распределением ресурсов, повышением производительности и выявлением узких мест.

Вы всё ещё обсуждаете с коллегами, какие процессы следует включить в модель и с какой степенью детализации. Договорились, что информация будет собрана в словарь process_dict следующей структуры. Предполагается, что этот словарь будет пополняться по мере получения новых сведений о процессах.

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

Давайте построим универсальную дискретно-событийную модель discrete_model_farm(), которая сможет планировать любое количество дискретных событий, описанных в словаре.

Входные аргументы модели (по порядку):

  1. process_dict: словарь с информацией о процессах
  2. simulation_time: период моделирования

Время в модели измеряется в днях.

Это упражнение является частью курса

Дискретно-событийное моделирование на Python

Посмотреть курс

Инструкции к упражнению

  • Инициализируйте переменные состояния модели: time (отслеживает время) и supply_chain (отслеживает количество циклов) — и установите их значения равными нулю.
  • Задайте условие завершения так, чтобы модель работала, пока time меньше simulation_time.
  • Прибавьте продолжительность процесса к переменной состояния time.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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")  
Редактировать и запускать код