Просматривая свое расписание, организованное ИИ, вам нужно задать себе два вопроса: «Должен ли один и тот же человек выполнять две задачи одновременно?» и «Может ли человек прибыть в следующую локацию после выполнения предыдущего задания?» Тот факт, что времена не совпадают, не означает, что это работоспособный график. На основе примера обзора расписания, написанного для Naver, на этот раз мы воспроизводим тот же расчет на Python. Приведенный ниже график и поправки представляют собой синтетические данные только для иллюстративных целей. Это не настоящая реакция ИИ или настоящий человеческий график...
Просматривая свое расписание, организованное ИИ, вам нужно задать себе два вопроса: «Должен ли один и тот же человек выполнять две задачи одновременно?» и «Может ли человек прибыть в следующую локацию после выполнения предыдущего задания?» Тот факт, что времена не совпадают, не означает, что это работоспособный график.
На основе примера обзора расписания, написанного для Naver, на этот раз мы воспроизводим тот же расчет на Python. Приведенный ниже график и поправки представляют собой синтетические данные только для иллюстративных целей. Это не настоящая реакция ИИ или настоящий человеческий график.
1. Условия, которые необходимо уточнить перед расчетом
В этом примере один человек выполняет работу в порядке A → B → C → D в пределах одной даты и часового пояса.
Поездка между офисом и учебной комнатой занимает 20 минут в любом направлении. Это входные условия, а не фактические измерения.
Время начала и окончания A и B фиксировано.
C и D можно перенести позже, но время работы останется на уровне 20 и 30 минут соответственно.
Все работы должны быть завершены к 12:00.
В этой же локации предполагается, что следующее задание можно запустить, как только будет завершено предыдущее. Время отдыха и подготовки не учитывалось.
работа
время
место
A · Организация данных
09:00–09:30
офис
Б · Посещать тренинги
10:00–10:30
тренировочный зал
C · Организация запросов
10:20–10:40
тренировочный зал
D · Регистрация результатов
10:50–11:20
офис
2. Перекрытие рассчитывается для всех пар задач.
Изменение времени начала и окончания на прошедшую полночь упрощает сравнение. 10:20 — 620 минут, 10:30 — 630 минут. Количество минут, перекрывающихся между двумя интервалами, равно:
Перекрытие = макс(0, мин(конец1, конец2) - макс(начало1, начало2))
B и C перекрываются на min(630, 640) – max(600, 620) = 10 минут. Это конфликт, поскольку один человек должен присутствовать на обеих задачах, даже если они расположены в одном месте.
Если следующая задача начинается в момент ее завершения, перекрытие считается 0. Это означает, что раздел интерпретируется как [начало, конец]. Четыре задачи сравнивают все шесть возможных пар. Если вы сортируете по времени начала и проверяете только соседние строки, вы можете пропустить конфликты с другими задачами в рамках более длинной задачи.
3. Передвижение проверяется в установленном порядке посещения.
Секции, перемещающиеся в разные места, также должны соответствовать следующим условиям:
Время в пути = начало следующей задачи – конец предыдущей задачи.
Недостаточное время = max(0, необходимое время в пути - доступное время в пути)
A→B путешествует 20 минут с интервалом в 30 минут.