0

我正在研究一种解决方案,我们需要将车辆路由到客户要求的任务位置。这是我的域的样子:

interface TaskOrVehicle{
@InverseShadowVarible Task nextTask;
getLocation();
}

任务:

   @PlanningEntity 
    Class Task implements TaskOrVehicle{
    @ChainedPlanningVariable TaskOrVehicle taskOrVehicle;
    @PlanningVariable Staff staff;
    @AnchorShadowVariable Vehicle vehicle;
    }

因此,我将 Staff 和 Vehicle 作为事实,而 Task 是一个计划实体。因此,使用 optaplanner 时,它会在链中安排任务,但会将不同的员工分配给同一链中的不同任务。

因此,如果 A、B、C、D 和 E 是任务,并且 Staff 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 应该具有与当前任务相同的员工的规则来修复它,但这是一个矫枉过正的问题。

我可以在这里做哪些最佳实践,以便每个任务链都有相同的员工

注意:我不想让员工留在车辆中,就好像车辆免费一样,它可以分配给不同的员工以进行新的任务链。

4

0 回答 0