OptaPlanner: пробелы в цепочке во времени

Я только недавно начал учиться пользоваться OptaPlanner. Прошу прощения, если ниже приведено технически неточное описание.

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

Я смоделировал эту проблему с помощью шаблона «Сквозная временная цепочка», в котором каждая машина является якорем. Но проблема в том, что задачи на определенной машине могут не выполняться последовательно из-за ограничения приоритета. Например, задача B может быть запущена только после завершения задачи A, в то время как задачи A и B выполняются на машинах I и II соответственно. Это означает, что во время выполнения задачи A на машине I, если нет другой задачи, которая может быть запущена на машине II, машина II может оставаться в режиме ожидания только до тех пор, пока задача A не завершится, после чего на ней может быть запущена задача B. Этот вид разрыва не является детерминированным, так как он зависит от продолжительности Задачи A по отношению к этому примеру. Согласно руководству OptaPlanner, кажется, что для такого рода проблем следует ввести дополнительные пробелы в переменных планирования. Но сейчас мне трудно моделировать эту переменную разрыва. В общем, как интегрировать переменную разрыва в модель, используя временную цепочку? Было бы очень полезно какое-нибудь подробное объяснение или даже простой пример.

Более того, я на самом деле не уверен, подходит ли временной шаблон для моделирования такого рода задач назначения задач, или я просто использовал совершенно неподходящий метод. Может кто-нибудь пролить свет на это? Заранее спасибо.


person gerryken    schedule 16.11.2018    source источник
comment
Я думаю, что шаблон временного интервала подойдет лучше, поскольку вы можете написать правила, обеспечивающие, что определенные задачи не могут находиться в одном временном интервале. Но тогда ваши задачи должны иметь одинаковую длину (а я думаю, что это не так). Или, может быть, даже лучше, используйте шаблон временной зернистости с точной временной детализацией (хотя это может быть медленнее, как указано в документации). Я думаю, что приковать сквозь время было бы довольно сложно.   -  person n1ck    schedule 16.11.2018


Ответы (1)


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

person 李其武    schedule 20.12.2018