我正在制定一个解决方案,我们需要将车辆路由到客户要求的任务位置。以下是我的域名的样子:
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->一种(ST1) - > B(ST1) - > C(ST1) V2-> d(ST2) - > E(ST2)
但我的解决方案如下: V1->一种(ST1) - > B(ST3) - > C(ST2) V2-> d(ST3) - > E(ST2)
这是因为我没有雇员链接并使用员工作为计划变量。现在,我可以使用nextTask应该拥有与当前任务相同的员工的规则来修复它,但这是一种过度杀伤。
我可以在此处执行哪些最佳做法,以便每个任务链都有相同的员工?
注意:我不想让员工保持在车辆中,就像车辆获得免费一样,可以将其分配给不同的员工以进行新的任务链。