1

Using course scheduling as an example, say an instructor can only teach n courses. To enforce this, my thought is to find all courses that are being taught by a given instructor, and increase badness by the negative difference, by half if below. How would I go about doing that (getting all courses that are taught by a given professor)?

1 Answers1

1

If you introduce a List<Course> courseList bi-directional variable (section 6.2. Bi-directional Variable (Inverse Relation Shadow Variable) in the Instructor class, you'll have access to all his courses:

@PlanningEntity
public class Course {
    @PlanningVariable(valueRangeProviderRefs = {"instructorRange"})
    private Instructor instructor;
}

@PlanningEntity 
public class Instructor {
    @InverseRelationShadowVariable(sourceVariableName = "instructor")
    private List<Course> courseList;
}

As for scoring, penalise hard score when the instructor has too many courses assigned and soft score when there aren't enough of them.

grudolf
  • 1,764
  • 3
  • 22
  • 28