Маршрут автомобиля с персоналом
Я работаю над решением, в рамках которого нам нужно направить наш автомобиль в места Задач, заданных нашими Заказчиками. Вот как выглядит мой домен:
interface TaskOrVehicle{
@InverseShadowVarible Task nextTask;
getLocation();
}
Задача:
@PlanningEntity
Class Task implements TaskOrVehicle{
@ChainedPlanningVariable TaskOrVehicle taskOrVehicle;
@PlanningVariable Staff staff;
@AnchorShadowVariable Vehicle vehicle;
}
Итак, у меня есть Посох и Автомобиль как факты, в то время как Задача - это объект планирования. Таким образом, с помощью optaplanner он планирует задачи в цепочке, но назначает разных сотрудников для разных задач в одной цепочке.
Таким образом, если A, B, C,D и E являются задачами, и сотрудники st1,st2,st3 и Vechcle V1,V2 находятся там.
Идеальное решение выглядит так: V1->A(st1)->B(st1)->C(st1) V2->D(st2)->E(st2)
Но мое решение выглядит так: V1->A(st1)->B(st3)->C(st2) V2->D(st3)->E(st2)
Это потому, что у меня нет сотрудников, связанных с цепочкой, и я использую сотрудника в качестве переменной планирования. Теперь я могу исправить это, используя правила, согласно которым в nextTask должен быть тот же сотрудник, что и в текущей задаче, но это перебор.
Каковы лучшие практики, которые я могу сделать, чтобы в каждой цепочке задач был один и тот же сотрудник?
Примечание. Я не хочу оставлять сотрудника в Транспортном средстве, так как, если Транспортное средство освобождается, его можно назначить другому сотруднику для новой цепочки задач.