Я использую OptaPlanner для оптимизации задачи маршрутизации транспортных средств, очень похожей на приведенный пример.
Я столкнулся со следующей проблемой и буду признателен за некоторые идеи.
Некоторые посещения клиентов связаны с другими посещениями, например:
- Посещение должно начинаться одновременно с другим посещением.
- Посещение должно начаться через 2 часа после завершения другого посещения.
- Посещение должно быть назначено тому же транспортному средству, которое было назначено для другого посещения.
Задача заключается в следующем: как разрешить ходы посещений, не приводя к снижению оценки при перемещении одного из них?
Каждое посещение может быть на другой панели (назначено разному транспортному средству), поэтому все предоставленные селекторы ходов, скорее всего, будут предоставлять ходы, которые изменяют только одно посещение. Такие ходы, скорее всего, приведут к снижению очков из-за зависимости и никогда не будут выбраны.
Тот же стартовый сценарий: любой ход, изменяющий время начала одного посещения, приведет к более низкому баллу. Сценарий с одним и тем же транспортным средством: любое движение, которое приводит к смене одного посещения другого транспортного средства, приведет к меньшему количеству очков.
В настоящее время я использую Tabu Search с удовлетворительными результатами. Позднее принятие может быть ответом.
Спасибо.