Releases: UniTime/cpsolver
cpsolver-1.3.133
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
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
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
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
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
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
Build:Maven
- updated scm settings to use https://github.com/UniTime/cpsolver
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
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
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
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)