Releases: UniTime/cpsolver
cpsolver-1.3.177
Student Scheduling: Enrollment
- equals: include reservation in the equality checking
- this fixes an issue with solution restore (current solution containing the same enrollment, but
without the reservation)
Revision 9e14989 by tomas-muller muller@unitime.org (26-Jun-2019 7:52 PM)
cpsolver-1.3.176
Student Scheduling: Student Quality in Java 7
- corrected build for Java 7
(e.g., StudentQuality$Nothing is not abstract and does not override abstract method remove() in
Iterator)
Revision 34b4265 by tomas-muller muller@unitime.org (24-Jun-2019 2:46 PM)
Online Student Scheduling: Suggestions
- few more improvements when dealing with course requests that have many alternatives
- show suggestions for the same course first
(before suggestions for other courses, unless there are preferences or unassignments that take
priority) - improved speed a little by changing the way possible enrollments for a course request are sorted
(preferred enrollments first; then enrollments of the same course, ordered by the number of
changes)
Revision 342e12d by tomas-muller muller@unitime.org (23-May-2019 9:30 AM)
Student Scheduling: Preferences (when dealing with alternatives)
- consider two sections to be of the same choice (same instructional type, time and instructor)
only if they are of the same course as well - improves handing of preferences for course requests with many alternative courses
- consider two sections to be of the same time (same instructional type and time) only if they are
of the same course as well - a class is considered preferred (selected) only if there is a matching section or config
preference - not when there is a preference of the same choice
- computation of selected enrollments (of a course request)
- do not skip sections that are not selected, but for which there is no preference
(instead of including these in the computation of selected sections, which was messing up the
order of computed suggestions)
Revision 8023054 by tomas-muller muller@unitime.org (23-May-2019 9:29 AM)
Online Student Scheduling: Suggestions
- make sure that suggestions with better alternativity are higher in the list of suggestions
Revision 79a346e by tomas-muller muller@unitime.org (21-May-2019 9:45 PM)
Batch Solver: Suggestions
- ignore Sectioning.KeepInitialAssignments in the OnlineSectioningModel
(this is to allow suggestions to be computed on the Student Sectioning Dashboard page when the
batch solver is loaded with Sectioning.KeepInitialAssignments = true)
Revision 9e03e1c by tomas-muller muller@unitime.org (21-May-2019 9:41 PM)
cpsolver-1.3.174
Minor Fixes
- fixed a few minor issues discovered by the new unlikely argument type solver warnings
Revision 91de3b1 by tomas-muller muller@unitime.org (9-May-2019 4:00 PM)
Course Timetabling: Course Alterantives
- added ability to provide course alternatives (for a student)
- course alternatives still create a joint-enrollment constraint, but the conflict weight of
a student with the alternative is zero
(student is not going to take both courses)
Revision ae0fc11 by tomas-muller muller@unitime.org (9-May-2019 3:58 PM)
Student Scheduling: Group Label
- added ability to remember group/accommodation name (besides of the code/abbreviation)
Revision 1eed8ba by tomas-muller muller@unitime.org (9-Apr-2019 7:31 PM)
CSVFile: added load(Reader) and write(Reader)
Revision 9b5c562 by tomas-muller muller@unitime.org (5-Apr-2019 4:39 PM)
Student Scheduling: Critical Courses Report
- added critical courses report
Revision 9521295 by tomas-muller muller@unitime.org (1-Apr-2019 10:34 PM)
Student Scheduling Model: Assigned Critical Courses
- solution info: exclude alternative course requests from the computation of the assigned critical
courses
Revision 418a251 by tomas-muller muller@unitime.org (1-Apr-2019 10:34 PM)
Student Scheduling: Tableau Report
- removed showdates (will be handled differently)
- added simplified version (fewer columns)
Revision 129ca25 by tomas-muller muller@unitime.org (4-Mar-2019 8:54 PM)
Student Scheduling: Override Reservations
- override reservations that are marked as must be used:
such reservations must be used regardless of their expiration status
Revision ca3a26a by tomas-muller muller@unitime.org (21-Feb-2019 2:41 PM)
Student Scheduling Reports: Tableau Report
- added ability to include term, solver started time stamp, and solution published time stamp
Revision ea6c3de by tomas-muller muller@unitime.org (14-Feb-2019 7:18 PM)
Student Scheduling: Learning Community Reservations
- added Learning Community Reservations
combining Student Group Reservation and Course Reservation
(reservation is for students of a particular group taking the offering under the appropriate
course name)
Revision 3a8d728 by tomas-muller muller@unitime.org (8-Feb-2019 5:27 PM)
Build: fixed dom4j javadoc link
Revision f2ff4eb by tomas-muller muller@unitime.org (20-Dec-2018 1:05 PM)
Batch Student Scheduling: Critical Course Requests
- critical course request assignment moved before min-credit to ensure critical courses are
assigned first - only check for critical courses when a student has a least one critical course request
unassigned - only check for min-credit when a student has assignments below the min credit
Revision 8532954 by tomas-muller muller@unitime.org (19-Dec-2018 8:58 PM)
Batch Student Scheduling: Critical Course Requests
- XML Load: added ability to move critical courses higher in their priority
when Xml.MoveCriticalUp is set to true, defaults to false
Revision df51e2e by tomas-muller muller@unitime.org (18-Dec-2018 4:11 PM)
Batch Student Scheduling: Min Credit / Critical Course Requests
- added ability to change the time limit for the min-credit branch&bound selection
Neighbour.MinCreditBranchAndBoundTimeout parameter, defaults to 10000 (10 seconds)
Revision 4468dce by tomas-muller muller@unitime.org (18-Dec-2018 4:09 PM)
Batch Student Scheduling: Critical Course Requests
- some courses may be marked as critical (they are important for the student to progress towards
their degree) - critical courses are assigned first (together with min credits)
- critical courses cannot be unassigned during random unassignment or during standard selection
- Critical flag is included in the tableu report
Revision a5f745c by tomas-muller muller@unitime.org (14-Dec-2018 3:03 PM)
Student Scheduling: Tableau Report
- first version of a report that lists information needed for additional reporting
Revision 36696c6 by tomas-muller muller@unitime.org (6-Dec-2018 2:10 PM)
Student Scheduling: Solution Info
- prefix the new student schedule quality criteria with Schedule Quality:
- Choice: compute average assigned choice and the numbers of assigned courses of the 1st, 2nd,
etc. choice - Priority: compute average not-assigned course request priority and the numbers of not-assigned
course request of priority 1, 2, 3, ...
Revision 3e4cc40 by tomas-muller muller@unitime.org (4-Dec-2018 8:46 PM)
Course Timetabling: B&B Student Sectioning
- fixed null exception
Revision 4298d78 by tomas-muller muller@unitime.org (20-Nov-2018 4:33 PM)
Student Scheduling: Student Schedule Quality
- added a new extension, names StudentQuality replacing both DistanceConflict and
TimeOverlapsCounter - besides of time and distance conflicts, the following criteria have been added:
- lunch breaks (allow time for lunch): there is a lunch conflict created when the student has two
classes on a day that overlap with the lunch period of 11 am - 1 pm with less than 30 minutes in
between - travel time: there is a conflict proportional to the travel time (in minutes) between two
classes on the same day that are less than 1 hour apart (or less than 2 hours apart when the
travel time is longer than the break time of the first class -- 10 minutes for most classes) - back-to-back: there is a (negatively weighted) conflict for any two classes that are
back-to-back and on the same day (the idea is to minimize gaps, so we want more classes
clustered together) - workday: there is a conflict when the student has two classes that have more than six hours
between the start of the first one and the end of the second one; the conflict is proportional
to the number of hours over this limit (e.g., if the two classes span 8 hours, the penalty is 2)
-- again the idea is to make the schedule more compact, without unnecessary gaps - too early: there is a conflict when the class starts before 8:30 am (proportional to the time of
the class before 8:30) - too late: there is a conflict when the class ends after 5:30 pm (proportional to the time of the
class after 5:30)
Revision 3b0ccdc by tomas-muller muller@unitime.org (20-Nov-2018 2:17 PM)
Nightly Builds
- build maven to target folder (instead of dist)
- clean target folder before and after making and deploying a new SNAPSHOT build
Revision 4eda065 by tomas-muller muller@unitime.org (1-Nov-2018 7:19 PM)
Student Scheduling: Required Choices
- added ability for a student to require sections and/or configurations
Revision f728962 by tomas-muller muller@unitime.org (16-Oct-2018 8:33 PM)
Examination Solver: added Same Day distribution constrain (#14)
- corrected ExamDistributionConstraint.isSatisfied(Assignment, Placement) for different day
Revision a37ddc4 by tomas-muller muller@unitime.org (10-Oct-2018 6:26 PM)
Examination Solver: added Same Day distribution constrain (#14)
Revision 36c1382 by rafati rafat.ishaq@gmail.com (10-Oct-2018 6:17 PM)
Student Scheduling Solver: Info
- show balancing parameters in the same format as the others
- that is: percentage% (value)
- instead of: value (percentage%)
Revision 820bd00 by tomas-muller muller@unitime.org (10-Oct-2018 5:56 PM)
Parallel Solver: neighbour.assignments()
- catch any exceptions thrown by neighbour.assignments()
Revision 01b8847 by tomas-muller muller@unitime.org (10-Oct-2018 5:54 PM)
Batch Student Scheduling: Backtrack Selection
- when it is allowed to select assigned requests (Neighbour.IncludeAssignedRequests is true)
- skip all assigned free time requests
- skip all assigned course requests that have no selection preferenes and already have the primary
course assigned
Revision c961ad1 by tomas-muller muller@unitime.org (6-Oct-2018 8:10 AM)
Batch Student Scheduling: Swap Enrollments Selection
- corrected a possible null exception when a course requests becomes unassigned during the search
Revision 8b5dc18 by tomas-muller muller@unitime.org (5-Oct-2018 8:31 AM)
Parallel Solver: Logging
- changed logging of "Failed to select a neighbour" errors to debug
(but include stack trace)
Revision e698330 by tomas-muller muller@unitime.org (4-Oct-2018 5:05 PM)
Batch Student Scheduling: Swap Enrollments Selection
- added a selection that swaps enrollments of different students of a course
- this is to improve the enrollment alternativity as well as selection preferences
- only triggers on assigned course requests that do not have the primary course (first course in
the list) or that have section or instructional method preferences
Revision f325cf4 by tomas-muller muller@unitime.org (4-Oct-2018 5:02 PM)
Student Scheduling Solver: Info
- few minor changes
- do not show weighted value of time and distance conflicts
- do not log student has no requests warnings
- include assigned course requests and selections in the toString(Assignment) method
Revision 19b3ffd by tomas-muller muller@unitime.org (4-Oct-2018 4:58 PM)
Student Scheduling Solver: Can Inherit Context
- solver model as well as the two extensions (distance conflicts and time overlaps) now implement
the CanInheritContext interface - this makes for a faster copy of the context (when multiple solver threads are used)
- this also fixes a small glitch in the backtracking neighbour where the total value of the
initial problem could have been incorrectly computed
(not including time overlaps or distance conflicts if the two context have not been copied over
yet)
Revision 1b575ce by tomas-muller muller@unitime.org (4-Oct-2018 2:59 PM)
Student Scheduling:...
cpsolver-1.3.146
Batch Student Scheduling: Priority/Equal Weighting Improvements
- added two digits in the rounding
Revision 17be9a0 by tomas-muller muller@unitime.org (3-Jul-2018 5:33 PM)
Batch Student Scheduling: Priority/Equal Weighting Improvements
- MPP: do not throw an error when getDifference(Enrollment) is called for a free-time request
Revision 714dd31 by tomas-muller muller@unitime.org (3-Jul-2018 5:31 PM)
Batch Student Scheduling: Priority Weighting Improvements
- make sure that the first alternative request is weighted lower than the last not-alternative
request
(especially if there is just one alternative request) - improved computation of the base request weights when left-over spread is enabled
(last request has lower weight than the last but one request)
Revision df4813b by tomas-muller muller@unitime.org (3-Jul-2018 5:27 PM)
cpsolver-1.3.145
Batch Student Scheduling: Priority/Equal Weighting Improvements
- additive / multiplicative approach
- as some of the penalties depend on assignments of other students (same group, balancing),
it is important to make sure that total solution value does not diverge with the search - to improve this, the priority weighting schema allows to be changed from multiplicative to
additive that is- instead of weight = * ((1 - w1) * violation1) * ((1 - w2) * violation2) * ...
- it could be weight = * (1 - (w1 * violation1) - (w2 * violation2) - ... )
where weights are between 0 and 1 and violations are signifying how well is the given property violated
(0 not violated, 1 completely violated)
it is important that the total student weights are less than one, which is the case for the defaults - to enable the new additive formulation, set StudentWeights.AdditiveWeights to true (defaults to false)
- as some of the penalties depend on assignments of other students (same group, balancing),
- maximize course request assignment
- by default, the priority weighting schema only maximizes the overall student weights
- this, while working very well on individual student bases, has the drawback of not using
alternatives in some cases
(the penalization for using an alternative can be greater than the weight of some other student
getting into the primary course if he/she has the course with much lower priority) - when StudentWeights.MaximizeAssignment is set to true (defaults to false), a better solution has
more course requests assigned
(the overall student weights are used when both solutions have the same number of assigned course
requests)- this may, on the other hand, occasionally cause a student to have two lower priority courses
assigned instead of a single higher priority course
- this may, on the other hand, occasionally cause a student to have two lower priority courses
- precise computation of the solution total value
- when StudentWeights.PreciseComparison is set to true (defaults to false), the total value of
a solution is computed when comparing two solutions (instead of using the cached value) - this negates small fluctuations in the cached total value caused by the order in which course
requests are assigned
- when StudentWeights.PreciseComparison is set to true (defaults to false), the total value of
Revision 7862e56 by tomas-muller muller@unitime.org (28-Jun-2018 5:50 PM)
cpsolver-1.3.144
Student Scheduling: Solution Info
- Assigned course requests: exclude alternative course requests from the total
(100% means all students have a complete schedule)
Revision 514bd75 by tomas-muller muller@unitime.org (14-Jun-2018 9:34 AM)
Student Scheduling: Selected Enrollments
- only return selected enrollments of the first course
(the selected enrollments of the alternative course or courses do not take precedence over other
enrollments of the first course) - this fixes the issue of giving student an alternative course because of its preference when the
Students.BranchWhenSelectedHasNoConflict is enabled
(other enrollments of the request are ignored when there is a non-conflicting selected enrollment)
Revision 889ccf1 by tomas-muller muller@unitime.org (13-Jun-2018 10:04 PM)
Online Student Scheduling: Section / IM Preferences
- as the preferred sections / instructional methods are checked first, the multi-criteria
selection criterion needs to make sure that request alternativity is properly checked - this fixes an issue where an alternative course was selected because of its preference
Revision 9693b2a by tomas-muller muller@unitime.org (13-Jun-2018 9:50 PM)
Student Scheduling: Same Time Choice
- corrected same time comparison between a choice and a section when the data are loaded from XML
(choices do not have time pattern id)
Revision 57384b2 by tomas-muller muller@unitime.org (13-Jun-2018 8:42 PM)
Student Scheduling: Reservation Cap
- corrected computation of reservation cap when the section restrictions span multiple
configurations
Revision 15cf2d8 by tomas-muller muller@unitime.org (13-Jun-2018 8:40 PM)
Student Scheduling: Selected Enrollments
- fixed an issue where alternativity of a course in the request was ignored
- improved computation when there are selections for two or more courses in a single request
Revision abe8a27 by tomas-muller muller@unitime.org (13-Jun-2018 8:36 PM)
Online Student Scheduling: Max Over-Expected Constraint
- prevent an endless loop when there are no more adepts for conflicts
Revision 9c59d92 by tomas-muller muller@unitime.org (15-May-2018 8:02 PM)
cpsolver-1.3.140
Online Student Scheduling: Suggestions B&B Algorithm
- improved performance when over-expectations are being minimized
- especially, do not allow for an over-expected section in a course which does not need it by
suggesting that a course that needs an over-expected section will be unassigned - used by the Compute Suggestions action
Revision efefbdd by tomas-muller muller@unitime.org (10-May-2018 4:49 PM)
Online Student Scheduling: Max Over-Expected Constraint
- added a global constraint limiting the over-expected penalization for a student
- only to be used during online scheduling (that is, with the OnlineSectioningModel)
Revision d470c54 by tomas-muller muller@unitime.org (10-May-2018 4:48 PM)
Online Student Scheduling: Minimize Conflicts
- added a special version of the over-expected criterion that minimizes time and space conflicts
- a class is considered over-expected when it is not available (limit is zero) or when there is
a time conflict with some other enrollment of the student (despite the reservation allowing for
the conflict)
Revision 6f60329 by tomas-muller muller@unitime.org (10-May-2018 4:45 PM)
Online Student Scheduling: Online Sectioning Selection
- added ability to limit the overall over-expected penalty
- both multi-criteria and standard algorithms of the Find Assignment action updated to enforce the
maximal penalty limit (when set)
Revision fc38b27 by tomas-muller muller@unitime.org (10-May-2018 4:41 PM)
Online Student Scheduling: Student Weighting Criteria
- comparison of student solutions and bound checking: use the new more context-aware computation
of over-expected penalty
(when the over-expected criterion implements the new OverExpectedCriterion.HasContext context)
Revision cfd65a5 by tomas-muller muller@unitime.org (10-May-2018 4:36 PM)
Online Student Scheduling: Over-Expected Criterion
- added ability to provide two additional methods returning over-expected penalty, considering
- context of a constraint that is being evaluated (value to be assigned, and computed conflicts)
- current assignment of a branch&bound algorithm (enrollment array, index of the request)
Revision 46787b6 by tomas-muller muller@unitime.org (10-May-2018 4:32 PM)
Abstract Criterion: added getPercentage(Assignment)
Revision 51ffc56 by tomas-muller muller@unitime.org (7-May-2018 9:50 AM)
Conflict Statistics: toString
- print more information when ConflictStatistics.Print is set to true
Revision 17acf0a by tomas-muller muller@unitime.org (7-May-2018 9:50 AM)
ID Convertor: constructor changed to public
Revision fbd0648 by tomas-muller muller@unitime.org (7-May-2018 9:48 AM)
cpsolver-1.3.137
Batch Student Scheduling: Classes with no time assignment
- weights: added penalization of classes that have no time assignment (parameter
StudentWeights.NoTimeFactor, defaults to 0.01) - solution info: added "Using classes w/o time" property showing % of course enrollments with no
time
Revision 2786d3d by tomas-muller muller@unitime.org (18-Apr-2018 4:23 PM)
Student Scheduling: Solution Info
- Time overlapping conflicts: show the number of time conflict in hours, compute time overlaps
between courses in the extended info
Revision 0ec859b by tomas-muller muller@unitime.org (18-Apr-2018 4:18 PM)
cpsolver-1.3.136
Student Scheduling: Disabled Sections
- fixed XML save (section.enabled)
Revision f8e30fc by tomas-muller muller@unitime.org (16-Mar-2018 2:01 PM)
Student Scheduling: Disabled Sections
- added ability to mark certain sections as disabled
- such sections cannot be used, unless the student allows for disabled sections,
or there is a (group) reservation that allows for disabled sections
Revision 457e131 by tomas-muller muller@unitime.org (15-Mar-2018 6:52 PM)
Batch Student Scheduling: Student Weights
- weight 3rd and the following alternatives (using StudentWeights.FirstAlternative ^ index)
Revision 3eea705 by tomas-muller muller@unitime.org (16-Feb-2018 3:42 PM)
cpsolver-1.3.135
Student Scheduling: Disabled Sections
- added ability to mark certain sections as disabled
- such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections
Revision 457e131 by tomas-muller muller@unitime.org (15-Mar-2018 6:52 PM)
Batch Student Scheduling: Student Weights
- weight 3rd and the following alternatives (using StudentWeights.FirstAlternative ^ index)
Revision 3eea705 by tomas-muller muller@unitime.org (16-Feb-2018 3:42 PM)