我正在研究OptaPlanner的示例用例。而且我找不到任何可以在一个计划实体中解决多个计划变量的类似示例。例如,在护士排班中,一个班次的每个ShiftAssignment(PlanningEntity)
可能需要多次分配Employee(PlanningVariables)
。在这种情况下,我们如何使用规划器和编写规则?
答案 0 :(得分:1)
不要将OneToMany方面作为计划变量,而是将ManyToOne方面作为计划变量。如果你有一个ManyToMany方面,介绍一个类(如关系数据库设计)和充当ManyToOne-OneToMany。
在护士排班示例中,Shift
在ShiftDate
1-JAN ShiftType
早期需要4名护士。在这种情况下,Shift
有requiredEmployeeSize
4,并为该单ShiftAssignments
创建了4 Shift
,每个indexInShift
都有不同的ShiftAssignment
。这样,Employee
有一个计划变量Shift
,这是一个ManyToOne关系,(即使Employee
和{{1}}之间存在ManyToMany关系)。