Имеете дело с изменением свойств проблемного факта в сценарии планирования смены?

Я использую OptaPlanner для расчета смен (то есть времени начала, времени окончания и необходимой квалификации) из набора задач, которые необходимо обрабатывать в течение дня.

Я использую директора оценки слюни и установил ряд правил, чтобы назначать задачи сменам, сохраняя при этом такие ограничения, как:

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

Пока что получаю довольно приличные результаты. Однако осталась одна оптимизация. Должна быть возможность иметь смены разной продолжительности (например, 8-часовые, 6-часовые и 4-часовые смены), и существует порог, при котором смена считается продуктивной (например, если 60% времени покрываются задачами). Так что было бы лучше иметь больше, более коротких, но продуктивных смен, чем длительных непродуктивных.

Мне, как правило, трудно дать определение чему-то подобному. Проблема, на мой взгляд, в том, что это своего рода свойство сдвига. Однако сдвиг является фактом моего планирования и поэтому не может изменить его состояние во время расчета.

Ты хоть представляешь, как я могу решить эту проблему?

Заранее спасибо, С уважением, Хендрик


person Hendrik Löhn    schedule 17.10.2013    source источник


Ответы (1)


Предполагая, что Task и Shift являются фактами проблемы, а TaskAssignment - это объект планирования, который определяется task и имеет переменную планирования shift.

when
  $s: Shift($t : treshold)
  $totalTime : Number(intValue < $t) from accumulate (TaskAssignment(shift == $s, $t : time) sum($t))
then
  add($t - $totalTime)
end
person Geoffrey De Smet    schedule 17.10.2013