我可以在OptaPlanner中使用多个@PlanningEntityCollectionProperty吗?

时间:2016-05-16 23:19:03

标签: java optaplanner

我想将Employee分配到Reserve期或Shift期。

@PlanningSolution
public class RosterSolution implements Solution<HardSoftScore> {

  @PlanningEntityCollectionProperty 
  private List<Shift> shift = new ArrayList<Shift>();

  @PlanningEntityCollectionProperty 
  private List<Reserve> reserve = new ArrayList<Reserve>();
  ....



}

每个Shift和Reserve实体都有一个@PlanningVariable

@PlanningVariable(valueRangeProviderRefs={"employees"}, nullable= true)
    private Employee emp;

是否可以在解决方案中使用多个@PlanningEntityCollectionProperty注释?我还没有看到任何使用它的例子。 @PlanningSolution下的文档说明每个规划解决方案必须具有至少1个 PlanningEntityCollectionProperty或PlanningEntityProperty属性,但我不确定如何实现它。

我试图避免单一的使用类型编码的计划实体列表,除非我能用状态/策略模式替换类型代码&#39; (如果可能的话)。

1 个答案:

答案 0 :(得分:0)

是的,你可以。示例CoachShuttleGatheringSolutionVehicleRoutingSolution执行此操作。

当您有多个计划实体类(其中一些可以是阴影实体类)时,它很有用。但除非你真的需要,否则不要去那里。