Skip to content

Releases: UniTime/cpsolver

cpsolver-1.3.133

08 Feb 16:35
Compare
Choose a tag to compare

Course Timetabling: Student Conflicts

  • StudentConflict.overlaps(Placement p1, Placement p2): removed an accidentally added check of ignoring overlap when the time between the start of the first class and the end of the last class is over 6 hours
  • this fixes an issue introduced in commit 041a744 (Workday Student Conflicts)

Revision b5f78d1 by tomas-muller muller@unitime.org (8-Feb-2018 4:06 PM)

Course Timetabling: Too Big Rooms

  • do not use static parameters
  • instead of TooBigRooms.getTooBigRoomPreference(Placement) use Model.getCriterion(TooBigRooms.class).getPreference(Placement)
  • fixes issue #9

Revision 1e6325a by tomas-muller muller@unitime.org (2-Feb-2018 2:25 PM)

TooBigRooms: Configurable thresholds

Revision 72bc695 by Stephan Sundermann s.sundermann@fu-berlin.de (2-Feb-2018 2:00 PM)

Extensions: Search Intesification

  • search intensification made assignment context aware

Revision f445620 by tomas-muller muller@unitime.org (26-Jan-2018 2:03 PM)

Neighbourhoods: Suggestion Move

  • do the backtracking within a writelock (instead of a readlock)
  • this fixes issue #8

Revision 2ad6bb5 by tomas-muller muller@unitime.org (26-Jan-2018 2:02 PM)

cpsolver-1.3.130

16 Jan 07:29
Compare
Choose a tag to compare

Course Timetabling: Student over-lunch conflicts

  • added an experimental criterion that tries to keep student all classes before or after the lunch
    period
  • there is a conflict (penalized by Comparator.StudentOverLunchConflictWeight parameter) every
    time when a student has two classes, one in the morning (starting before or at the lunch period)
    and one in the afternoon (starting after lunch period)
  • when StudentConflict.OverLunchSamyDayOnly is true, only conflicts between classes that are on
    the same day are counted
  • the lunch period is defined by StudentConflict.NoonSlot parameter (defaults to 144)

Revision 7469519 by tomas-muller muller@unitime.org (16-Jan-2018 8:15 AM)

Online Student Scheduling: Distances

  • when comparing two solutions, include distance conflict within the enrollment

Revision a6eafd1 by tomas-muller muller@unitime.org (19-Dec-2017 6:32 PM)

Student Scheduling: Distance Conflicts

  • consider need Short Distances student accommodation
  • when a student needs short distances, there is a distance conflict between two back-to-back
    classes if the distance in minutes is greater than zero

Revision 11873f2 by tomas-muller muller@unitime.org (14-Dec-2017 6:48 PM)

Course Timetabling: Student Minimize Schedule Holes

  • show the average student class distance in minutes

Revision 35e3d4d by tomas-muller muller@unitime.org (14-Dec-2017 1:34 PM)

Course Timetabling: Workday Student Conflicts

  • added work-day student conflicts
  • there is a work-day conflict when the time between the start of the first class and the end of
    the last class on a day is too long (e.g., more than 8 hours)
  • solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default
    is -1, work-day conflicts are disabled)

Revision 041a744 by tomas-muller muller@unitime.org (12-Dec-2017 7:49 AM)

Online Student Scheduling: Online Sectioning Selection

  • added ability to require a course request to remain unassigned

Revision 5798989 by tomas-muller muller@unitime.org (11-Dec-2017 4:28 PM)

Course Timetabling: Workday Constraint

  • added WORKDAY(4): 4 Hour Work Day
  • added WORKDAY(5): 5 Hour Work Day

Revision 452c343 by tomas-muller muller@unitime.org (7-Dec-2017 6:17 AM)

cpsolver-1.3.124

28 Nov 14:45
Compare
Choose a tag to compare

Online Student Scheduling: Build Schedule

  • prefer sections that are available: corrected Enrollment comparator
  • this fixes the "Comparison method violates its general contract!" exception
  • introduced in commit 680fc5d

Revision 91eda80 by tomas-muller muller@unitime.org (21-Nov-2017 4:02 PM)

Examination Timetabling: Student/Instructor Conflicts

  • correct precise computation of direct, back-to-back, and more than two exams on a day criteria

Revision 497c256 by tomas-muller muller@unitime.org (10-Nov-2017 3:59 PM)

Examination Timetabling: Criteria

  • changed the value upate type to after unassigned after assigned
  • this corrects the direct conflict computations when a student is assigned to three or more exams
    on a day
  • this corrects the more than two exams on a day computation when a student is assigned to four or
    more exams on a day

Revision 220b633 by tomas-muller muller@unitime.org (10-Nov-2017 3:54 PM)

cpsolver-1.3.121

06 Nov 13:00
Compare
Choose a tag to compare

Student Scheduling: Student Conflict Constraint

  • ensure that completeness of a student schedule is properly checked during the assignment
    (using Student.canAssign(request) does not work as it returns true when the request is already
    assigned and the conflicts are checked when Constraint.assigned(value) is called; this was causing
    troubles for the IFS phase)

Revision 44696c0 by tomas-muller muller@unitime.org (5-Nov-2017 7:52 AM)

Student Scheduling: Student Conflict Constraint

  • checking whether a student already has a complete schedule corrected
    if the request is over the limit (student already has a complete schedule), do not return a free
    time or a wait-listed course request as a conflict

Revision 3d79125 by tomas-muller muller@unitime.org (3-Nov-2017 9:17 PM)

Course Timetabling: General.LastWorkDay < General.FirstWorkDay

  • corrected behavior of SPREAD and MIN_ROOM_USE constraints (and a few other places) when week
    starts on Sunday
  • e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday)

Revision 1a8fd7d by tomas-muller muller@unitime.org (28-Oct-2017 1:28 PM)

Course Timetabling: Distribution Constraints

  • corrected behavior of PRECEDENCE, BTB_DAY, NDB_GT_1, and FOLLOWING_DAY when week starts on
    Sunday
  • e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday)

Revision c1c2e44 by tomas-muller muller@unitime.org (28-Oct-2017 1:27 PM)

Student Scheduling: Online Weights

  • minimize class penalties: divide penalty by the number of sections (counting average section
    penalty of the enrollment)
  • this is to avoid penalization of enrollments with more/fewer sections

Revision 6d13138 by tomas-muller muller@unitime.org (23-Oct-2017 1:45 PM)

Student Scheduling: Course Reservation

  • corrected default: can assign over limit is false (DEFAULT_CAN_ASSIGN_OVER_LIMIT = false)

Revision 3e9e19c by tomas-muller muller@unitime.org (20-Oct-2017 1:50 PM)

Online Student Scheduling: Build Schedule

  • prefer sections that are not available (there is space in them)
  • this is especially useful when a student has an individual reservation that is not given for
    a particular section or for special registration (student is allowed to pick any section)

Revision 680fc5d by tomas-muller muller@unitime.org (12-Oct-2017 7:37 PM)

Online Student Scheduling: Suggestions

  • put selected sections higher in the list

Revision b6ebf4b by tomas-muller muller@unitime.org (12-Oct-2017 5:27 PM)

Course Timetabling: Max Half-Days Constraint

  • fixed an ArrayOutOfBounds exception

Revision 77c6eac by tomas-muller muller@unitime.org (10-Oct-2017 9:24 PM)

cpsolver-1.3.114

20 Oct 05:51
Compare
Choose a tag to compare

Student Scheduling: Scheduling Assistant Weights

  • corrected precision on the selected choices criterion as the result is a % of the selected
    classes

Revision 23f80ad by tomas-muller muller@unitime.org (9-Oct-2017 1:51 PM)

Course Timetabling: Max Half-Days Constraint

  • the MaxHalfDays constraint limits the number of half-days of week during which the given set of
    classes are taught
  • it has one parameter: a maximal number of week half-days during which the given set of classes
    can be placed
  • a day is split by noon (which can be changed using General.HalfDaySlot parameter)
  • a class starting before noon is considered a morning class (despite of its end), a class
    starting at noon or later is considered an afternoon class
  • For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week

Revision 0bbc75d by tomas-muller muller@unitime.org (8-Oct-2017 3:57 PM)

Examination Timetabling: Period Preferences

  • added additional information about how well are the period preferences satisfied into the
    solution extended info
    (showing how many time a preferred, a strongly preferred, etc. period is selected for an exam)

Revision 456fbdf by tomas-muller muller@unitime.org (8-Oct-2017 12:03 PM)

Course Timetabling: added MaxHoles distribution constraint

  • the MaxHoles constraint limits the number of free time (holes) for an instructor on a day
    (between the first and the last class on a day)
  • it has one parameter: a maximal amount of free time that an instructor can have on a day in
    minutes
  • for example, reference MaxHoles:120 translates to a maximum number of two hours of total free
    time between the first and the last class on a day
  • if required, having more free time is prohibited
  • if preferred or strongly preferred, the excessive free time is penalized

Revision 240e858 by tomas-muller muller@unitime.org (8-Oct-2017 11:59 AM)

Course Timetabling: Student Conflicts

  • added a naive, yet effective approach for minimizing holes in student schedule
  • the new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two
    classes taught on the same day that are not back-to-back
  • the penalization is based on the time distance between the two classes, computed in hours
  • these penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to
    1/20 of the Comparator.StudentConflictWeight
  • to enable this criterion, add
    org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to
    General.AdditionalCriteria
  • added a naive, yet effective approach for minimizing number of days in student schedule
  • the new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes
    taught on different days
  • these penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to
    1/20 of the Comparator.StudentConflictWeight
  • to enable this criterion, add
    org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to
    General.AdditionalCriteria
  • as the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as
    possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect,
    if desired

Revision f62c1cf by tomas-muller muller@unitime.org (8-Oct-2017 11:51 AM)

Examination Timetabling: Room Split Penalty

  • increased the limit on the maximal number of rooms that an exam can take to 30

Revision c09fdcb by tomas-muller muller@unitime.org (8-Oct-2017 11:50 AM)

Examination Timetabling: Save XML

  • corrected examination period penalty value

Revision 54a23a9 by tomas-muller muller@unitime.org (29-Sep-2017 5:42 PM)

cpsolver-1.3.111

05 Sep 12:15
Compare
Choose a tag to compare

Course Timetabling: Group Constraint

  • do not use forward-checking when checking for hard conflicts during an assignments
  • this fixes an issue on the Suggestion page (a conflict may not be shown) and during solution
    restore

Revision 406b658 by tomas-muller muller@unitime.org (14-Aug-2017 6:11 PM)

Course Timetabling: Student Groups

  • when computing Student Groups solution info, avoid a Null exception when there is a class with
    no configuration

Revision 309935e by tomas-muller muller@unitime.org (30-Jun-2017 9:05 AM)

cpsolver-1.3.109

20 Jun 12:36
Compare
Choose a tag to compare

Build:Maven

Revision a2d1b55 by tomas-muller muller@unitime.org (20-Jun-2017 2:05 PM)

Student Scheduling: XML Save

  • only include course-dependent section names when the resultant XML is allowed to contain names
  • use course id mapping in the course-dependent section names

Revision d7ac5e6 by tomas-muller muller@unitime.org (20-Jun-2017 9:58 AM)

Online Student Scheduling: Preferences

  • fixed a comparison method violates its general contract exception when comparing available
    enrollments

Revision b2d4c9d by tomas-muller muller@unitime.org (19-Jun-2017 10:33 PM)

Online Student Scheduling: Times to Avoid

  • fixed a NullPointerException when unavailability has no time
    (this can happen when a student is teaching an arrange hours class)

Revision e30643f by tomas-muller muller@unitime.org (19-Jun-2017 4:47 PM)

cpsolver-1.3.107

01 Jun 11:35
Compare
Choose a tag to compare

Course Timetabling: room limit for classes with no rooms

  • when a class needs zero rooms, also return zero for the room size needed
  • this fixes an issue with the Meet Together constraint put between classes with no rooms
    (forward checking failed because of the size of the assigned room (zero) was below the room size
    needed by the classes in the constraint)

Revision 2aa6bdb by tomas-muller muller@unitime.org (25-May-2017 8:09 PM)

Course Timetabling: On-Fly Student Sectioning (Save/Restore Best)

  • when on-fly student sectioning is enabled: save/restore student enrollments together with the
    best solution

Revision 78f3e75 by tomas-muller muller@unitime.org (11-May-2017 3:56 PM)

cpsolver-1.3.105

01 May 11:47
Compare
Choose a tag to compare

Instructor Scheduling: Parent Attribute

  • added parent-child attribute relation
  • if there is a preference for a particular attribute, instructors with the same attribute or with
    one of the parent attributes (attribute parent of the selected attribute, or the parent of the
    parent attribute, etc.) meet the preference

Revision 9b01696 by tomas-muller muller@unitime.org (26-Apr-2017 9:01 PM)

Course Timetabling: Student Sectioning Improvements

Branch&Bound based Student Sectioning

  • improved computation of the bound (it is now faster and more accurate for student groups)
  • added dynamic value (enrollment) ordering (using remaining section space)
  • added ability to optimize on student groups first (solver parameter SctSectioning.GroupFirst,
    defaults to false)
  • use deterministic initial sectioning if there are student groups (it better keeps students of
    the same group together)
    Local-Search based Student Sectioning
  • corrected computation of the student swap impact on the student group value
  • objective value (combining student conflicts and student groups) can no longer be negative
  • use deterministic initial sectioning if there are student groups (it better keeps students of
    the same group together)
    Initial Student Sectioning
  • improved checking of section limit when students are weighted to fill the course completely
  • use all students of a group when computing group average distance
    Default Student Sectioning, Deterministic Student Sectioning
  • include Student groups in the solution info, if there are any

Revision 0aba64f by tomas-muller muller@unitime.org (30-Mar-2017 5:23 PM)

Student Scheduling: Academic Area, Classification, and Major

  • added ability to remember the <area, classification, major> triplets on the students
    (instead of using <area, classification> and <area, major> pairs)

Revision eaf7f38 by tomas-muller muller@unitime.org (21-Mar-2017 7:13 PM)

Student Scheduling: Section Balancing

  • include enrollments that are over the limit (due to a reservation) in the section balancing

Revision 1d72327 by tomas-muller muller@unitime.org (16-Mar-2017 5:41 PM)

Hill Climber

  • avoid updating last iteration when value of the given neighbour is small (less than -0.00001)
  • this corrects the setting of the epsilon constant from commit 793eb7a (it was set way to high)

Revision dc55545 by tomas-muller muller@unitime.org (24-Feb-2017 2:33 PM)

IFS: Problem Loader / Saver

  • added ability to interrupt load or save
    (this can be done by providing an instance of the TerminationCondition interface that the
    load/save routine periodically checks)

Revision 12921b6 by tomas-muller muller@unitime.org (18-Jan-2017 6:24 PM)

Course Timetabling: Student Sectioning

  • added ability to terminate student sectioning in the middle of the work
    (this can be done by providing an instance of the TerminationCondition interface that the student
    sectioning routine periodically checks)

Revision 3c896c4 by tomas-muller muller@unitime.org (18-Jan-2017 6:23 PM)

Course Timetabling: Branch&Bound based Student Sectioning

  • implemented a new student sectioning algorithm
  • based on Branch & Bound, changing enrollments of a selected offering at a time
  • trying to find the best possible enrollment into a course while enrollments for other courses
    are fixed
  • minimizing student conflicts (using student conflict criteria) as well as trying to keep
    students of the same group together

Revision ace4ade by tomas-muller muller@unitime.org (18-Jan-2017 5:08 PM)

Course Timetabling: Local-Seach based Student Sectioning

  • implemented a new student sectioning algorithm
  • based on local search using Hill Climber and Great Deluge
  • swapping two students of a course or moving a student to a different enrollment of a course in
    each iteration
  • minimizing student conflicts (using student conflict criteria) as well as trying to keep
    students of the same group together

Revision 499b96e by tomas-muller muller@unitime.org (18-Jan-2017 5:02 PM)

Course Timetabling: Important Student Conflicts

  • added ability to recognize important student conflicts during student scheduling (when moving
    students in and out a joint-enrollment constraint)

Revision a5abbf0 by tomas-muller muller@unitime.org (13-Jan-2017 7:28 PM)

Course Timetabling: XML Load

  • make sure that the student configurations are in sync with student lectures

Revision d55871e by tomas-muller muller@unitime.org (13-Jan-2017 4:12 PM)

Course Timetabling: Student Sectioning

  • added ability for the student sectioning class to provide solution info

Revision 459ed3b by tomas-muller muller@unitime.org (13-Jan-2017 4:10 PM)

Course Timetabling: Student Groups

  • a few changes in the model

Revision 4282923 by tomas-muller muller@unitime.org (13-Jan-2017 4:09 PM)

IFS: Criteria

  • added ability to configure criterion before it is initialized by the solver
    (calling the new configure method)
  • this allows to use criteria before the solver is started, e.g., during the student sectioning in
    course timetabling

Revision f079fdd by tomas-muller muller@unitime.org (13-Jan-2017 4:01 PM)

Course Timetabling: Important Student Conflicts

  • added ability to recognize important student conflicts during student scheduling (when moving
    students in and out a joint-enrollment constraint)
    (when using the new method isApplicable(Student, Lecture, Lecture))

Revision 04f0c8d by tomas-muller muller@unitime.org (13-Jan-2017 3:54 PM)

Course Timetabling: Student Groups

  • added student groups and a many-to-many relation between students and student groups

Revision 1100b60 by tomas-muller muller@unitime.org (9-Dec-2016 4:55 PM)

ToolBox: Random element of a collection

ToolBox.random(Collection set): do not create a new List when the given collection is not
a list
(iterate the collection istead, which is much faster)

Revision 9b4f335 by tomas-muller muller@unitime.org (9-Dec-2016 4:50 PM)

Instructor Scheduling: Teaching Assignment

  • do not set zero value (it is not needed)

Revision 96b2c2e by tomas-muller muller@unitime.org (5-Dec-2016 3:54 PM)

Course Timetabling: added MEET_WITH_WEEKS group constraint

  • added a group constraint combining Meet Together and Same Weeks

Revision d1ca01a by tomas-muller muller@unitime.org (1-Dec-2016 1:55 PM)

Instructor Assignment: Unassigned Instructor Load

  • Unassigned Instructor Load Criterion: count value of a change as the remaining unassigned load
    of a student

Revision 1aeea7b by tomas-muller muller@unitime.org (28-Nov-2016 3:02 PM)

Instructor Scheduling: Same Days / Same Room Constraints

  • added same days and same room distrubution constraints

Revision 9eb8a56 by tomas-muller muller@unitime.org (21-Nov-2016 6:45 PM)

Online Student Scheduling: Multi-Criteria Branch&Bound Selection

  • always allow the course request to remain unassigned, when all (required) values are conflicting

cpsolver-1.3.94

11 Nov 19:06
Compare
Choose a tag to compare

Online Student Scheduling: Multi-Criteria Branch&Bound Selection

  • always allow the course request to remain unassigned, when all (required) values are conflicting

Revision 83cf069 by tomas-muller muller@unitime.org (11-Nov-2016 3:57 PM)

IFS: Model

  • Model.getTotalValue(Assignment): if there are criteria, use
    Criterion.getWeightedValue(Assignment) instead of Value.toDouble(Assignment)

Revision c4d9181 by tomas-muller muller@unitime.org (10-Nov-2016 9:03 PM)

IFS: Value

  • Value.toDouble(Assignment): if a value has no (double) value, use criteria instead

Revision 88f681d by tomas-muller muller@unitime.org (10-Nov-2016 9:02 PM)

Student Scheduling: Student Availability

  • a student holding an individual reservation (reservation that allows for overlap) can get
    a class that is overlapping with an unavailability

Revision 94f4b56 by tomas-muller muller@unitime.org (4-Nov-2016 6:00 PM)

Student Scheduling: Student Availability

  • a student may not be available during a particular time because he/she is teaching some other
    class
    such an unavailability may allow for overlaps (in which case the overlapping time is to be
    minimized instead)

Revision 3b70fa7 by tomas-muller muller@unitime.org (4-Nov-2016 5:32 PM)

Student Scheduling: Course Request Choices

  • choice parsing (from choice id) corrected
  • this commit fixes an issue introduced by commit 4e30627

Revision 8e069d5 by tomas-muller muller@unitime.org (4-Nov-2016 5:07 PM)

Student Scheduling: Instructors

  • XML Load: improved backward compatibility (read instructorIds and instructorNames attributes of
    a section element if it has no instructor elements)