#optaplanner
Вопрос:
Я разрабатываю проблему планирования шаблонов ежедневных временных интервалов с приоритетом задач и постоянством ресурсов ежедневных смен.
- Каждый продукт состоит из нескольких партий, и каждая партия состоит из последовательных задач (например, подготовкасмешиваниеобработка и т.д.), Которые должны быть запланированы.
- Задачи потребляют единицы смены, и для каждого типа задач существуют ограничения на дневную смену.
- Если две задачи подготовки одного и того же продукта запланированы на один и тот же день, они потребляют 1 единицу смены вместе, в то время как каждый из них по-прежнему использует 1 единицу смены, если они запланированы отдельно.
- Последующие задачи (например, смешивание или обработка) одних и тех же продуктов не выиграют от совместного планирования в один и тот же день. Если для одной задачи смешивания используется 1 единица смены, то для двух задач смешивания, запланированных на один и тот же день, потребуется в общей сложности 2 единицы смены.
Эта особенность отличается от проблемы планирования заданий проекта, когда изменение продолжительности задач зависит от машин, а не от других задач.
Я реализовал простую модель без изменяемых требований к ресурсам, и она работает. Мне пришла в голову дурацкая идея: вручную объединить две задачи подготовки и рассматривать их как одну задачу. Но это сделало бы модель менее универсальной и усложнило бы написание правил слюнотечения.
Мы будем признательны за любую подсказку или помощь. Спасибо.
Ответ №1:
Я решил эту проблему, используя теневую переменную «modifiedProcessTime» в объекте планирования и обновленную пользовательским списком переменных, когда две или более задач из одного и того же продукта одного и того же типа запланированы на один и тот же день. Первая задача сохраняет свое первоначальное время обработки, в то время как другие задачи устанавливаются равными нулю.