Skip to content

cpsolver-1.3.232

Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 09 Dec 13:00
· 147 commits to master since this release

Student Scheduling: Critical Course Requests / Priority Students

  • added ability to boost the weight of critical course requests (StudentWeights.CriticalBoost) and
    priority students (StudentWeights.PriortyBoost)
  • base weight is multipled by the boost parameter
  • both parameters default to 1.0, no bost
  • this is to make sure priority students and/or critical courses are more important when comparing
    two solutions

Revision 45aa96e by tomas-muller muller@unitime.org (27-Nov-2020 12:38 PM)

Student Scheduling: Student Swap

  • take students in the order by their priority, only students with the same priority
  • when failed, put the student back to the queue after the students with the same priority

Revision 4c8e38a by tomas-muller muller@unitime.org (25-Nov-2020 7:19 PM)

Student Scheduling: Enrollment Swap

  • take the unassigned requests in the order by their priority, only shuffle requests with the same
    priority
  • critical requests or priority student first (based on solver config)
  • request priority (higher priority first, substitute request last)
  • when failed, put the request at back to the queue after the requests with the same priority

Revision 7f3b213 by tomas-muller muller@unitime.org (25-Nov-2020 7:18 PM)

Student Scheduling: Backtracking

  • take the unassigned requests in the order by their priority, only shuffle requests with the same
    priority
  • critical requests or priority student first (based on solver config)
  • request priority (higher priority first, substitute request last)
  • when failed, put the request at back to the queue after the requests with the same priority

Revision 57d1903 by tomas-muller muller@unitime.org (25-Nov-2020 7:12 PM)

Student Scheduling: IFS

  • added ability to prohibit unassignment of a request of higher priority (than the request that is
    being assigned)
    when Neighbour.StandardCanHigherPriorityConflict is set to false (defaults to true)

Revision e97bdd5 by tomas-muller muller@unitime.org (24-Nov-2020 6:40 PM)

Student Scheduling: IFS

  • variable selection: skip unassigned free times when selecting variables

Revision c2eef88 by tomas-muller muller@unitime.org (24-Nov-2020 6:39 PM)

Student Scheduling: Enrollment Swap

  • listen for failed neibhours, put the failed request back into the queue

Revision aef7b66 by tomas-muller muller@unitime.org (22-Nov-2020 5:00 PM)

Student Scheduling: Student Swap

  • avoid cycling where the same student swap keeps on repeatedly failing (very rare, but not
    impossible)

Revision 961a4ae by tomas-muller muller@unitime.org (22-Nov-2020 4:59 PM)

Student Scheduling: IFS

  • improved handing of concurrent modification errors

Revision 42c0875 by tomas-muller muller@unitime.org (22-Nov-2020 4:59 PM)

Student Scheduling: IFS

  • added an ability to completely disable conflicting placements (no unassignments are allowed)
  • added an ability to disable conflicting placements at some point during the search (e.g., two
    hours before solver's timeout)
  • added an ability to disable this neighbourhood at some point during the search (e.g., no IFS if
    less than an hour before solver's timeout)
    -> this is to allow the solver some time at the end of the search to optimize the solution without
    making steps that are hard to undo or resolve

Revision 77a46cc by tomas-muller muller@unitime.org (20-Nov-2020 4:30 PM)

Student Scheduling: Restore Best

  • added a simple step that checks whether the best solution has improved since the last check
  • if there is no improvement, restore the best solution (reset the search to start from the best
    solution again)
  • the checking is done in the seletion's initialization phase, no neighbors are actually computed

Revision 061b087 by tomas-muller muller@unitime.org (20-Nov-2020 4:28 PM)

Student Scheduling: MPP

  • CourseRequest.isMPP() -- do not return true when the request has no initial assignment, but only
    some preferences (selected choices)
  • this is to avoid problems when initial assignments must be kept (e.g., branch&bound does not
    allow MPP request to be left unassigned)

Revision a5df083 by tomas-muller muller@unitime.org (19-Nov-2020 8:57 PM)

Student Scheduling: Required Sections / Configs

  • CourseRequest.isRequired(Section) -- corrected the config checking when there is a section
    required

Revision 62bfaa7 by tomas-muller muller@unitime.org (17-Nov-2020 9:02 AM)

Student Scheduling: Concurrent Modification

  • improved handing of concurrent modification errors during backtracking (caused by a model change
    during the search)
  • retry computation of the neighbour selection up to five times rather than skipping to the next
    student/request

Revision 12657a9 by tomas-muller muller@unitime.org (15-Nov-2020 1:16 PM)

Student Scheduling: Branch & Bound Selection

  • value ordering: always prefer enrollments that do not have a time conflict with a lower priority
    course which has only a few possible enrollments (five or less)
  • partial comparison of enrollments that are otherwise very close to each other was breking
    comparator transitivity in some cases
  • set OnlineStudentSectioning.TimesToAvoidHeuristics to false to swith of the time conflict
    checking

Revision 55c3eab by tomas-muller muller@unitime.org (15-Nov-2020 1:12 PM)

Student Scheduling: Critical IFS

  • can unassing: check student priority (do not allow unassignment of higher priority student)
  • can unassign: added ability to allow/disallow unassigment of a course request of the same or
    higher request priority (more critical)
  • by setting Neighbour.AllowCriticalUnassignment to true (defaults to false)

Revision 7290163 by tomas-muller muller@unitime.org (15-Nov-2020 1:09 PM)

Student Scheduling: Request Bound

  • added ability to switched off the request bound adjustments implemented by commit 5d0b726
  • by setting StudentWeights.ImprovedBound to false (defaults to true)

Revision c8d9df9 by tomas-muller muller@unitime.org (15-Nov-2020 1:04 PM)

Student Scheduling: Failed Neighbour Assignment

  • backtrack and student swap now also listen for failed neibhours, putting the failed
    student/request back into the queue
  • improving success of each phase, especially when there are higher number of solver threads
  • also students are put at the beginning of the queue, ensuring that priority students are
    processed first

Revision f555fa7 by tomas-muller muller@unitime.org (15-Nov-2020 12:59 PM)

Student Scheduling: XML Save/Load

  • include course id in the current/best/initial enrollment
  • this is to fix the case where a student is requesting multiple courses of a cross-listed course
    as alternatives to each other

Revision 1639c6f by tomas-muller muller@unitime.org (13-Nov-2020 5:16 PM)

Student Scheduling: Branch & Bound

  • when a neigbour (class schedule of a student) fails to be assigned, e.g., because the last spot
    in a class got taken:
  • put the student back at the beginning of the queue (instead of the end)
  • this is to ensure that student priority is beter considered (priority student does not get
    bumped at the end of the list)

Revision 4b8c09d by tomas-muller muller@unitime.org (13-Nov-2020 2:06 PM)

Student Scheduling: Request Bound

  • improved computation of course request bound in an attempt to improve the branching
  • include penalization for arrange hours, online, selection and intitial placement if it cannot be
    avoided
    (e.g., when all enrollments are online)

Revision 5d0b726 by tomas-muller muller@unitime.org (12-Nov-2020 9:04 PM)

Course Timetabling: Same Dates Group Constraint

  • added a new group constraint SAME_DATES
  • given classes must be taught on the same dates
  • if one of the classes meets more often, the class meeting less often can only meet on the dates
    when the other class is meeting
  • when prohibited or (strongly) discouraged: given classes cannot be taught on the same days
    (there cannot be a date when both classes are meeting)
  • note: unlike with the same days/weeks constraint, this constraint consider individual meeting
    dates of both classes

Revision 0e491d2 by tomas-muller muller@unitime.org (11-Nov-2020 6:04 PM)

Student Scheduling: Branch & Bound Selection

  • value ordering: among enrollments that are otherwise very close to each other (in terms of their
    value), prefer those that do not have a time conflict with a lower priority course which has
    only a few possible enrollments (five or less)

Revision 835f055 by tomas-muller muller@unitime.org (11-Nov-2020 5:34 PM)

Student Scheduling: Priority Students

  • student priority changed from being a boolean (priority yes/no) to have five layers of priority
    students
  • named Priority > Senior > Junior > Sophomore > Freshmen > Normal (no priority)
  • students of higher priority are assigned before students of lower priority
  • combined with course request priority depending on
    Sectioning.PriorityStudentsFirstSelection.AllIn
  • when true, student priority takes precedence Critical Priority > Non-Critical Priority >
    Critical Senior ...
  • when false, request priority takes precedence Critical Priority > Critical Senior > ... >
    Non-Critical Priority ...

Revision 6891ac1 by tomas-muller muller@unitime.org (6-Oct-2020 3:40 PM)