Как настроить рабочий лист, который оптимизирует выполнение задач - PullRequest
0 голосов
/ 25 сентября 2019

Мне дали список из 300 задач, каждое из которых имеет назначенное время для завершения, и список из 150 рабочих мест, в которых эти задачи могут быть выполнены.Ограничения следующие:

  • Каждое задание должно быть выполнено
  • Все рабочие места размещены так, чтобы образовать линию
  • Время завершения варьируется от 15 минут до 1 часа и45 минут
  • Требуется время перехода, когда задача завершена, и когда на этом рабочем месте может быть запущена следующая задача
  • Переходы продолжительностью 15-30 минут
  • Одновременно могут происходить только 25 переходов
  • Эти переходы не могут происходить в пределах 3 стендов друг от друга (Если переход начинается на верстаке 5, то стенды 3, 4, 6 и 7 не могут переходить до переходана 5 завершено)

Я пытаюсь сделать все это в Excel и достиг точки, когда я чувствую, что перепробовал все, что мог, и все еще получаю несовершенные результаты.

Общий макет

Макет моего листа отображается в виде временной линии, которая проходит горизонтально, а список рабочих мест - вертикально.У меня есть массив для каждой задачи и время его выполнения.Я разделил временную шкалу на 15-минутные интервалы.Первый столбец показывает, над какой задачей ведется работа.Второй столбец показывает, сколько времени осталось для выполнения задачи.Третий столбец показывает, сколько времени осталось после 15-минутного интервала.Четвертый столбец проверяет, выполнена ли задача или нет.Столбец 5 такой же, как столбец 1, поскольку он показывает, над какой задачей выполняется работа.Столбец 6 такой же, как 2, 7 такой же, как 3, и так далее, и так далее.Подводя итог, каждый интервал времени имеет 4 столбца данных, связанных с ним.

Формула ячейки 1 = IF (V4 = $ O $ 8, $ O $ 9, IF (V4 = $ O $ 9, IF (MAX (Q $ 4: Q $ 150, W $ 3: W3)) +1> MAX ($ G $ 1: $ G $ 600), $ O $ 12, MAX (Q $ 4: Q $ 150, W3: W $ 3) +1), V4))

Ячейка 1 проверяет, является ли Ячейка4 в предыдущем интервале времени указывает на то, что задача была выполнена или находилась в процессе перехода в течение этого интервала времени.Если любое из них истинно, то он пытается начать другую задачу, проверив значение MAX номеров задач во всех предыдущих столбцах ячейки 1, а затем добавив 1 (теоретически это будет означать, что следующая задача запускается).

Формула ячейки 4 = IF (ИЛИ (U10 = $ O $, U10 = $ O $ 11), IF (SUM (COUNTIF (V $ 4: V $ 150, $ O $ 8),СЧЕТЕСЛИ (V $ 4: V $ 150, $ O $ 9))> $ O $ 7, ЕСЛИ (МАКС (V $ 3: V $ 150) = MAX ($ G $ 2: $ G $ 601), $ O $ 12, $ O $ 11), ЕСЛИ(SUM (СЧЕТЕСЛИ (V8: V9, $ O $ 8), СЧЕТЕСЛИ (V11: V12, $ O $ 8), СЧЕТЕСЛИ (V8: V9, $ O $ 9), СЧЕТЕСЛИ (V11: V12, $ O $ 9))> 0,$ O $ 11, $ O $ 8)), Q10)

Ячейка 4 проверяет, осталось ли время или нет, проверяя ячейку 3. Если не осталось времени, то подсчитывается, сколько ячеек находится впереход или начало перехода в этом временном интервале.Если это больше чем 25, то это перечислено как ожидание.Это, очевидно, круговая ссылка, поэтому я включил итеративный расчет, и, похоже, он в основном решает проблему.Если переход возможен, он проверяет, начинаются ли уже 2 ячейки над и под ним или уже находятся в процессе перехода.Если это правда, то ждет.Иначе, он проверяет максимальное значение всех предыдущих задач и добавляет 1.

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

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

TLDR;

Мои основные вопросы лежат в аннотации.Я изо всех сил пытаюсь составить компоненты этой проблемы оптимизации.Наша цель - минимизировать общее время выполнения всех задач.Переменная в этой задаче - это когда каждая задача будет запущена и на каком стенде.Мы ограничены количеством рабочих мест, сколько рабочих мест может находиться в процессе перехода одновременно и насколько близко друг к другу могут быть два рабочих места одновременно.Мне нужна помощь в постановке этой проблемы в Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...