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

Производство одежды: многопроцессность и модульность

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

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

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

Теперь вы получили обратную связь от руководителя: необходимо добавить в модель новый процесс — «Точечная чистка и стирка» — который должен располагаться между шагами 8 и 9 (см. строку таблицы, выделенную красным). Пакеты random и simpy уже импортированы.

Таблица с названиями процессов, соответствующими функциями и сведениями о том, включён ли процесс в модель.

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

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

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

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

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

# Create a function for the new process
def ____(gen_type=None, gauss_mean=None, gauss_std=None, unif_start=None, unif_end=None):
  if gen_type == "gauss":
    duration = random.gauss(gauss_mean, gauss_std)
  elif gen_type == "uniform":
    duration = random.uniform(unif_start, unif_end)
  return duration

def all_processes(env, prod_line):

  with prod_line.request() as request:
    yield request

    t1 = fabric_relaxing(gen_type="gauss", gauss_mean=2*60, gauss_std=15)
    t2 = spread_form_layout(gen_type="gauss", gauss_mean=6, gauss_std=1)
    t3 = laying_paper_pattern(gen_type="uniform", unif_start=3, unif_end=0.5)
    t4 = marking(gen_type="gauss", gauss_mean=6, gauss_std=1)
    t5 = cutting(gen_type="gauss", gauss_mean=5, gauss_std=0.5)
    t6 = embroidery_screen_and_printing(gen_type="uniform", unif_start=10, unif_end=2)
    t7 = sewing(gen_type="gauss", gauss_mean=15, gauss_std=3)
    t8 = checking(gen_type="gauss", gauss_mean=2, gauss_std=0.5)

    # Add the new process
    tnew = ____

    # Account for the new process duration in the entire process duration
    total_duration = sum([t1, t2, t3, t4, t5, t6, t7, t8, ____, t9, t10])

    yield env.timeout(total_duration)
Редактировать и запускать код