在OptaPlanner中,如何限制一个事实分配给一个实体的次数?
In OptaPlanner, how does one restrict the number of times a fact is assigned to an entity?
以课程安排为例,假设一位讲师只能教授n门课程。为了实施这一点,我的想法是找到给定讲师教授的所有课程,并通过负差异增加不良,如果低于则增加一半。我将如何去做(获得指定教授教授的所有课程)?
如果您引入 List<Course> courseList
双向变量(讲师 class 中的 6.2. Bi-directional Variable (Inverse Relation Shadow Variable) 部分,您将可以访问他的所有课程:
@PlanningEntity
public class Course {
@PlanningVariable(valueRangeProviderRefs = {"instructorRange"})
private Instructor instructor;
}
@PlanningEntity
public class Instructor {
@InverseRelationShadowVariable(sourceVariableName = "instructor")
private List<Course> courseList;
}
至于评分,当老师分配的课程太多时,硬分会受到惩罚,而当分配的课程不够时,软分会受到惩罚。
以课程安排为例,假设一位讲师只能教授n门课程。为了实施这一点,我的想法是找到给定讲师教授的所有课程,并通过负差异增加不良,如果低于则增加一半。我将如何去做(获得指定教授教授的所有课程)?
如果您引入 List<Course> courseList
双向变量(讲师 class 中的 6.2. Bi-directional Variable (Inverse Relation Shadow Variable) 部分,您将可以访问他的所有课程:
@PlanningEntity
public class Course {
@PlanningVariable(valueRangeProviderRefs = {"instructorRange"})
private Instructor instructor;
}
@PlanningEntity
public class Instructor {
@InverseRelationShadowVariable(sourceVariableName = "instructor")
private List<Course> courseList;
}
至于评分,当老师分配的课程太多时,硬分会受到惩罚,而当分配的课程不够时,软分会受到惩罚。