CP Solver v1.3 build 109 change log (since the last release, build 79 on 16 Jun 2016 00:30)
Revision a2d1b55 by tomas-muller <muller@unitime.org> (20-Jun-2017 2:05 PM)
Build:Maven
- updated scm settings to use https://github.com/UniTime/cpsolver
Revision d7ac5e6 by tomas-muller <muller@unitime.org> (20-Jun-2017 9:58 AM)
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 b2d4c9d by tomas-muller <muller@unitime.org> (19-Jun-2017 10:33 PM)
Online Student Scheduling: Preferences
- fixed a comparison method violates its general contract exception when comparing available
enrollments
Revision e30643f by tomas-muller <muller@unitime.org> (19-Jun-2017 4:47 PM)
Online Student Scheduling: Times to Avoid
- fixed a NullPointerException when unavailability has not time
(this can happen when a student is teaching an arrange hours class)
Revision 2aa6bdb by tomas-muller <muller@unitime.org> (25-May-2017 8:09 PM)
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 78f3e75 by tomas-muller <muller@unitime.org> (11-May-2017 3:56 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 9b01696 by tomas-muller <muller@unitime.org> (26-Apr-2017 9:01 PM)
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 0aba64f by tomas-muller <muller@unitime.org> (30-Mar-2017 5:23 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 eaf7f38 by tomas-muller <muller@unitime.org> (21-Mar-2017 7:13 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 1d72327 by tomas-muller <muller@unitime.org> (16-Mar-2017 5:41 PM)
Student Scheduling: Section Balancing
- include enrollments that are over the limit (due to a reservation) in the section balancing
Revision dc55545 by tomas-muller <muller@unitime.org> (24-Feb-2017 2:33 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 12921b6 by tomas-muller <muller@unitime.org> (18-Jan-2017 6:24 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 3c896c4 by tomas-muller <muller@unitime.org> (18-Jan-2017 6:23 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 ace4ade by tomas-muller <muller@unitime.org> (18-Jan-2017 5:08 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 499b96e by tomas-muller <muller@unitime.org> (18-Jan-2017 5:02 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 a5abbf0 by tomas-muller <muller@unitime.org> (13-Jan-2017 7:28 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 d55871e by tomas-muller <muller@unitime.org> (13-Jan-2017 4:12 PM)
Course Timetabling: XML Load
- make sure that the student configurations are in sync with student lectures
Revision 459ed3b by tomas-muller <muller@unitime.org> (13-Jan-2017 4:10 PM)
Course Timetabling: Student Sectioning
- added ability for the student sectioning class to provide solution info
Revision 4282923 by tomas-muller <muller@unitime.org> (13-Jan-2017 4:09 PM)
Course Timetabling: Student Groups
- a few changes in the model
Revision f079fdd by tomas-muller <muller@unitime.org> (13-Jan-2017 4:01 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 04f0c8d by tomas-muller <muller@unitime.org> (13-Jan-2017 3:54 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 1100b60 by tomas-muller <muller@unitime.org> (9-Dec-2016 4:55 PM)
Course Timetabling: Student Groups
- added student groups and a many-to-many relation between students and student groups
Revision 9b4f335 by tomas-muller <muller@unitime.org> (9-Dec-2016 4:50 PM)
ToolBox: Random element of a collection
ToolBox.random(Collection<E> set): do not create a new List when the given collection is not
a list
(iterate the collection istead, which is much faster)
Revision 96b2c2e by tomas-muller <muller@unitime.org> (5-Dec-2016 3:54 PM)
Instructor Scheduling: Teaching Assignment
- do not set zero value (it is not needed)
Revision d1ca01a by tomas-muller <muller@unitime.org> (1-Dec-2016 1:55 PM)
Course Timetabling: added MEET_WITH_WEEKS group constraint
- added a group constraint combining Meet Together and Same Weeks
Revision 1aeea7b by tomas-muller <muller@unitime.org> (28-Nov-2016 3:02 PM)
Instructor Assignment: Unassigned Instructor Load
- Unassigned Instructor Load Criterion: count value of a change as the remaining unassigned
load of a student
Revision 9eb8a56 by tomas-muller <muller@unitime.org> (21-Nov-2016 6:45 PM)
Instructor Scheduling: Same Days / Same Room Constraints
- added same days and same room distrubution constraints
Revision 83cf069 by tomas-muller <muller@unitime.org> (11-Nov-2016 3:57 PM)
Online Student Scheduling: Multi-Criteria Branch&Bound Selection
- always allow the course request to remain unassigned, when all (required) values are
conflicting
Revision c4d9181 by tomas-muller <muller@unitime.org> (10-Nov-2016 9:03 PM)
IFS: Model
- Model.getTotalValue(Assignment): if there are criteria, use
Criterion.getWeightedValue(Assignment) instead of Value.toDouble(Assignment)
Revision 88f681d by tomas-muller <muller@unitime.org> (10-Nov-2016 9:02 PM)
IFS: Value
- Value.toDouble(Assignment): if a value has no (double) value, use criteria instead
Revision 94f4b56 by tomas-muller <muller@unitime.org> (4-Nov-2016 6:00 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 3b70fa7 by tomas-muller <muller@unitime.org> (4-Nov-2016 5:32 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 8e069d5 by tomas-muller <muller@unitime.org> (4-Nov-2016 5:07 PM)
Student Scheduling: Course Request Choices
- choice parsing (from choice id) corrected
- this commit fixes an issue introduced by commit 4e30627
Revision ccadc70 by tomas-muller <muller@unitime.org> (2-Nov-2016 4:37 PM)
Student Scheduling: Instructors
- XML Load: improved backward compatibility (read instructorIds and instructorNames attributes
of a section element if it has no instructor elements)
Revision 95ef62b by tomas-muller <muller@unitime.org> (2-Nov-2016 4:21 PM)
Student Scheduling: Instructors
- Instructor.toInstructors(...): avoid NumberFormatException when called with an empty
instructorIds string
Revision 31f1cf0 by tomas-muller <muller@unitime.org> (2-Nov-2016 4:20 PM)
Student Scheduling: Reservations
- CourseRequest.computeEnrollments(...): do not skip enrollments without a reservation if
there is a matching reservation that is not marked as must be used
Revision bf5d7bb by tomas-muller <muller@unitime.org> (31-Oct-2016 12:58 PM)
Student Scheduling: Selected Choices
- algorithm: added ability to branch (or not to branch) when there is a non-conflicting
selected enrollment found
(parameter Students.BranchWhenSelectedHasNoConflict, defaults to false)
- CourseRequest.isSelected(Section) check corrected to work on partial selections
(a section is NOT selected when there is a selected choice on the matching subpart or
configuration that is not matching the section)
Revision 4e30627 by tomas-muller <muller@unitime.org> (26-Oct-2016 5:19 PM)
Student Scheduling: Course Request Choices
- added ability to create preference on a configuration or on an individual section
- consider following choice matching (from most to least preferred):
- same section
- same choice (same itype, time and instructor)
- same time (same itype and time)
- same configuration
- include section/configuration preferences in the weighting models and search criteria
Revision bced2fd by tomas-muller <muller@unitime.org> (25-Oct-2016 6:06 PM)
Student Scheduling: Instructional Method
- added instructional method id and name on a configuration
Revision 95e6239 by tomas-muller <muller@unitime.org> (25-Oct-2016 5:36 PM)
Student Scheduling: Instructors
- moved instructor information from Section.choice onto the Section
(using the new Instructor object)
Revision 336b437 by tomas-muller <muller@unitime.org> (14-Sep-2016 8:41 PM)
Course Timetabling: Max N Hours A Day
- fixed another issue in conflict checking of Max N Hours A Day group constraint to prevent
the constraint from returning null conflicts when there are too many committed classes on
a day
Revision 177dc65 by tomas-muller <muller@unitime.org> (7-Sep-2016 4:18 PM)
Course Timetabling: Max N Hours A Day
- conflict checking for the Max N Hours A Day group constraint corrected: do not return
a constant variable (i.e., a committed class of some other problem) as a conflict
- also, return the evaluted placement as a conflict when there is not enough time on the day
for the class without unassigning a constant variable
Revision 2a9735b by tomas-muller <muller@unitime.org> (7-Sep-2016 1:13 PM)
Course Timetabling: Test
- when provided loader/saver classes are not found, fall back to the default XML loader/saver
classes
Revision 9ed45ef by tomas-muller <muller@unitime.org> (22-Aug-2016 2:05 PM)
Javadoc: fixed two warning
Revision 35b85db by tomas-muller <muller@unitime.org> (22-Aug-2016 1:54 PM)
Instructor Scheduling: Same Course / Common Preferences
- better handing of same course and same common preferences
- when same common is discouraged or prohibited: penalize case when common sections are
partially shared
- count satisfied positive preferences (preferred and strongly preferred) as negative penalty
instead of penalizing dissatisfaction
(no difference for the solver, better display)
Revision 5b0d267 by tomas-muller <muller@unitime.org> (14-Aug-2016 8:50 AM)
Instructor Scheduling: CHM Test Fix
- fixed "strings in switch are not supported in 1.6" compilation error
Revision ff3615c by tomas-muller <muller@unitime.org> (12-Aug-2016 6:07 PM)
Instructor Scheduling: Same Course, Same Common Preferences
- added ability to define same course and same common preferences individually on each
teaching request
- including both hard and soft variants
Revision 6375e64 by tomas-muller <muller@unitime.org> (12-Aug-2016 5:38 PM)
Instructor Scheduling: Same Course, Same Common Preferences
- added ability to define same course and same common preferences individually on each
teaching request
- including both hard and soft variants
Revision e34d1c8 by tomas-muller <muller@unitime.org> (9-Aug-2016 4:43 PM)
Batch Student Scheduling: Request Groups
- improved ability to keep students of the same request group together by shuffling students
of a request group that are spread over multiple sections into a single section or into
a fewer number of sections
Revision 69fbe60 by tomas-muller <muller@unitime.org> (9-Aug-2016 2:06 PM)
Student Scheduling: Model
- Same group characteristic moved from the extended info table to the info table
Revision b85882c by tomas-muller <muller@unitime.org> (9-Aug-2016 2:04 PM)
Backtrack Neighbour Selection: Custom Context
- added ability to provide a custom search context
Revision c544d35 by tomas-muller <muller@unitime.org> (9-Aug-2016 2:02 PM)
Roulette Wheel Selection: add existing
- added ability to add an object multiple times into the selection
Revision 625edea by tomas-muller <muller@unitime.org> (29-Jul-2016 9:58 PM)
Instructor Scheduling: Attribute Preference
- penalize a case when there is at least one preference for an attribute of a given (not
required) type, but the instructor has no matching attribute of that type
Revision 9514ec5 by tomas-muller <muller@unitime.org> (29-Jul-2016 9:56 PM)
Instructor Scheduling: Unused Instructor Load
- added a criterion that penalizes unused instructor load
Revision d1b838d by tomas-muller <muller@unitime.org> (1-Jul-2016 2:09 PM)
Course Timetabling: Back-to-Back
- avoid issues (especially ArrayIndexOutOfBoundsException) when classes that are in
a back-to-back constraint can partially overlap in time
Revision d348ca8 by tomas-muller <muller@unitime.org> (30-Jun-2016 10:13 PM)
Instructor Scheduling: Attribute Preference
- required attribute type: only prohibit teaching request that have an attriubute of
a required type that does not match the instructor
(this fixes an issue when no attribute of a required type is used)
Revision 1ffcc8e by tomas-muller <muller@unitime.org> (30-Jun-2016 10:12 PM)
Instructor Scheduling: Criteria
- improved computation of the criterion value for a particular instructor
Revision a1ae950 by tomas-muller <muller@unitime.org> (16-Jun-2016 8:19 PM)
Instructor Scheduling: Enrolled Classes
- added ability to include which classes the instructor is enrolled into (as student) or
teaching (outside of the assignment problem)