PlanningEntityCollectionProperty

PlanningEntityCollectionProperty

我想将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 and Reserve实体都有一个@PlanningVariable

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


解决方案中可以使用多个@PlanningEntityCollectionProperty批注吗?我还没有看到其用法的任何示例。 @PlanningSolution下的文档指出“每个计划解决方案必须至少具有1个PlanningEntityCollectionProperty或PlanningEntityProperty属性”,但是我不确定如何实现它。

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

最佳答案

是的你可以。示例CoachShuttleGatheringSolutionVehicleRoutingSolution做到了。

当您有多个计划实体类(其中一些可以是影子实体类)时,此功能很有用。但是除非确实需要,否则不要去那里。

关于java - 我可以在OptaPlanner中使用多个@PlanningEntityCollectionProperty吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37264702/

10-11 12:18