Конкретный вариант упаковки бункеров (n бункеров с оптимизацией для максимального увеличения минимального значения бункеров)

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

Я пытаюсь запланировать задачи для n сотрудников. Ключевое отличие здесь в том, что цель состоит в том, чтобы все сотрудники были заняты в любой момент времени. Время, необходимое для выполнения задач, очень второстепенно. Это формирует проблему упаковки контейнеров / работы в цеху со следующими вариациями:

  • 1-мерный
  • «Взаимосвязь» между задачами. например одна задача может зависеть от завершения другой перед ее началом, и эта задача может быть приписана другому сотруднику
  • Каждую задачу можно приписать только определенным людям
  • Минимальное значение по ячейкам в любой момент времени должно быть максимальным.

Исходя из этого, я думаю, что входными данными, которые вам понадобятся для задачи, будут «самое раннее время начала», «самое позднее время завершения», «продолжительность», «ссылки на другие задачи», «подходящие сотрудники». Затем задачи должны упасть в каждую из ящиков персонала - как Тетрис!

Это явно поворот в примерах расписания, которые я читал. Как вы думаете, это достижимо? Есть ли какие-либо ранее существовавшие примеры, с которых вы бы порекомендовали начать (ни один из примеров в руководстве не соответствует полностью)?

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


person user3441584    schedule 20.03.2014    source источник
comment
Привет, Мэтт, просто чтобы вы знали, это один из самых сложных классов проблем NP-complete (en.wikipedia.org/wiki/Job_shop_scheduling#Major_results). Оптимальное решение этой проблемы в разумные сроки может оказаться невозможным. Вы можете использовать существующий пакет, который может его приблизить.   -  person pbible    schedule 20.03.2014


Ответы (1)


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

Время начала и окончания похоже на временные окна VRP.

person Geoffrey De Smet    schedule 20.03.2014