Skip to content

Commit 40f2471

Browse files
committed
Student Scheduling: Dependent Courses
- suggestions improvements - dependent courses constraint do not return a conflict on unassignment of the child course (using an empty enrollment for the course) - do not check for dependent courses when computing available values (so a swap can be considered)
1 parent 99d6684 commit 40f2471

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

src/org/cpsolver/studentsct/constraint/DependentCourses.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void computeConflicts(Assignment<Request, Enrollment> assignment, Enrollm
4747
if (value != null && value.getCourse() != null) {
4848
// check if assigned course has a parent
4949
Course parent = value.getCourse().getParent();
50-
if (parent != null) {
50+
if (parent != null && !value.getAssignments().isEmpty()) {
5151
// has parent -> check if student has the parent course assigned
5252
for (Request request: value.getStudent().getRequests()) {
5353
if (request.hasCourse(parent)) { // this request has the parent course

src/org/cpsolver/studentsct/online/selection/SuggestionsBranchAndBound.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ protected List<Enrollment> values(final Request request) {
350350
return values;
351351
if (request instanceof CourseRequest) {
352352
CourseRequest cr = (CourseRequest) request;
353-
values = (cr.equals(iSelectedRequest) ? cr.getAvaiableEnrollments(iAssignment) : cr.getAvaiableEnrollmentsSkipSameTime(iAssignment));
353+
values = (cr.equals(iSelectedRequest) ? cr.getAvaiableEnrollments(iAssignment, false) : cr.getAvaiableEnrollmentsSkipSameTime(iAssignment, false));
354354
if (cr.equals(iSelectedRequest)) {
355355
Collections.sort(values, new Comparator<Enrollment>() {
356356
@Override

0 commit comments

Comments
 (0)