Skip to content

@tomas-muller tomas-muller released this Jul 12, 2019 · 1 commit to master since this release

Batch Student Scheduling: Critical Course Requests

  • improved handling of critical course requests
  • only consider critical course requests when sorting students for the Critical Courses B&B phase
    (students with fewer choices go first)
  • added two new phases that are only considering critical course requests, using backtracking and

Revision 2ffe7bb by tomas-muller (11-Jul-2019 8:30 PM)

Student Scheduling: Timing

  • display information about solver speed in the solver log (debug level) after particular phases
  • branch & bound, backtrack, student swap, and student enrollment swap

Revision b8b4f5d by tomas-muller (11-Jul-2019 8:30 PM)

Assets 6

@tomas-muller tomas-muller released this Jun 27, 2019 · 5 commits to master since this release

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 (26-Jun-2019 7:52 PM)

Assets 6

@tomas-muller tomas-muller released this Jun 24, 2019 · 8 commits to master since this release

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

Revision 34b4265 by tomas-muller (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
  • 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

Revision 342e12d by tomas-muller (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
  • 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 (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 (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 (21-May-2019 9:41 PM)

Assets 6

@tomas-muller tomas-muller released this May 14, 2019 · 15 commits to master since this release

Minor Fixes

  • fixed a few minor issues discovered by the new unlikely argument type solver warnings

Revision 91de3b1 by tomas-muller (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 (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 (9-Apr-2019 7:31 PM)

CSVFile: added load(Reader) and write(Reader)

Revision 9b5c562 by tomas-muller (5-Apr-2019 4:39 PM)

Student Scheduling: Critical Courses Report

  • added critical courses report

Revision 9521295 by tomas-muller (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

Revision 418a251 by tomas-muller (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 (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 (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 (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 (8-Feb-2019 5:27 PM)

Build: fixed dom4j javadoc link

Revision f2ff4eb by tomas-muller (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
  • only check for min-credit when a student has assignments below the min credit

Revision 8532954 by tomas-muller (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 (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 (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 (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 (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 (4-Dec-2018 8:46 PM)

Course Timetabling: B&B Student Sectioning

  • fixed null exception

Revision 4298d78 by tomas-muller (20-Nov-2018 4:33 PM)

Student Scheduling: Student Schedule Quality

  • added a new extension, names StudentQuality replacing both DistanceConflict and
  • 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
  • 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 (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 (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 (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 (10-Oct-2018 6:26 PM)

Examination Solver: added Same Day distribution constrain (#14)

Revision 36c1382 by rafati (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 (10-Oct-2018 5:56 PM)

Parallel Solver: neighbour.assignments()

  • catch any exceptions thrown by neighbour.assignments()

Revision 01b8847 by tomas-muller (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 (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 (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 (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 (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 (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

Revision 1b575ce by tomas-muller (4-Oct-2018 2:59 PM)

Student Scheduling: Added Request Priority Report

  • this reports lists all the requested courses and their properties, namely:
  • Alternative is 1 when the course was requested as an alternative (Primary is 0 or Alternativity
    is above 0)
  • Enrollet is 1 when the student is enrolled in the course
  • Primary is 1 when the request is from the Course Requests table, 0 when it is from the Alternate
    Course Requests table
  • Priority is the request's priority
  • Alternativity is the request's alternativity (0 for the primary course, 1 for the first
    alternative, 2 for the second alternative, etc.)

Revision c31c5e5 by tomas-muller (27-Sep-2018 5:20 PM)

Student Scheduling: Min Credits

  • first attempt to maximize the number of students that have less than min credits assigned
  • added an initial stage that takes one student at a time and assign at least the given number of
    credits (students with no min credit are skipped)
  • other stages: do not unassign a request that would get a student under the min credit

Revision c78761e by tomas-muller (24-Sep-2018 9:16 PM)

Student Scheduling: Min Credit

  • added min credits (for each student)

Revision 9a52bfb by tomas-muller (24-Sep-2018 9:15 PM)

Student Scheduling: Config

  • added instructional method reference

Revision 187dfeb by tomas-muller (24-Sep-2018 9:14 PM)

Course Timetabling: Test

  • fixed a null exception when there is a class with no time placements

Revision d84b606 by tomas-muller (15-Sep-2018 9:39 AM)

Course Timetabling: Distribution Constraints

  • changed visibility of a few methods and attributes so that the weighting schema of distribution
    constraints can be altered through inheritance

Revision 311bce1 by tomas-muller (15-Sep-2018 9:37 AM)

Online Student Scheduling: Priority Criterion

  • do not consider reservations when comparing two enrollments for alternativity

Revision 9e5ebe9 by tomas-muller (10-Sep-2018 9:11 PM)

Course Timetabling: XML Load

  • do not load initial value as assignment (if assignment is not provided)
  • do not load currently assigned value as best assignment (if best is not provided)
  • log assignment issues to solver log

Revision 72611b9 by tomas-muller (5-Sep-2018 6:52 PM)

Constants: Preference Penalties

  • allow preference penalties to be changed (removed final)

Revision 7fc9a1e by tomas-muller (5-Sep-2018 6:17 PM)

Course Timetabling: Group Constraint

  • added ability to parametrize group constraints
    (a group constraint can take any number, not just the ones for which there is a record in the
    ConstraintType enum)
  • MAX_HRS_DAY, WORKDAY, and MIN_GAP can now take any number of hours (including a floating point
    (e.g., WORKDAY(7.5) for a workday of 7.5 hours, 90 slots)

Revision 661680b by tomas-muller (5-Sep-2018 6:03 PM)

Student Scheduling: Best Penalty Criterion

  • corrected canImprove(...) method: penalties are double (not int)

Revision 24fc9c4 by tomas-muller (14-Aug-2018 6:17 PM)

Student Scheduling: Minimize Conflicts

  • corected OverExpected.ParentWeight parameter

Revision e086931 by tomas-muller (14-Aug-2018 6:16 PM)

Student Scheduling: Max Credit

  • added ability to define max credit of a student
  • a student, with max credit cannot get courses that exceeed the given credit
  • also his/her schedule is considered complete when any unassigned course would get him/her over
    the max credit

Revision 3cf78cd by tomas-muller (14-Aug-2018 6:15 PM)

Student Scheduling: Extended Solution Info

  • added % of assigned course requests that are not alternatives (named Assigned priority course
  • added numbers of students that are missing 1, 2, 3, 4, or 5+ courses

Revision 6514270 by tomas-muller (26-Jul-2018 2:24 PM)

Student Sectioning: Linked Sections

  • include class external ids in the constraint name

Revision f5baaf2 by tomas-muller (11-Jul-2018 11:02 AM)

Student Sectioning: XML Load

  • assing requests only after distribution constraints has been loaded
  • this is to make sure that the Linked Classes constraints are respected in the best/current

Revision 73e5339 by tomas-muller (11-Jul-2018 11:01 AM)

Assets 6

@tomas-muller tomas-muller released this Jul 3, 2018 · 64 commits to master since this release

Batch Student Scheduling: Priority/Equal Weighting Improvements

  • added two digits in the rounding

Revision 17be9a0 by tomas-muller (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 (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
    (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 (3-Jul-2018 5:27 PM)

Assets 6

@tomas-muller tomas-muller released this Jul 2, 2018 · 69 commits to master since this release

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)
  • 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
      • this may, on the other hand, occasionally cause a student to have two lower priority courses
        assigned instead of a single higher priority course
  • 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

Revision 7862e56 by tomas-muller (28-Jun-2018 5:50 PM)

Assets 6

@tomas-muller tomas-muller released this Jun 14, 2018 · 72 commits to master since this release

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 (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 (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 (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 (13-Jun-2018 8:42 PM)

Student Scheduling: Reservation Cap

  • corrected computation of reservation cap when the section restrictions span multiple

Revision 15cf2d8 by tomas-muller (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 (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 (15-May-2018 8:02 PM)

Assets 6

@tomas-muller tomas-muller released this May 11, 2018 · 81 commits to master since this release

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 (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 (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 (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 (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 (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 (10-May-2018 4:32 PM)

Abstract Criterion: added getPercentage(Assignment)

Revision 51ffc56 by tomas-muller (7-May-2018 9:50 AM)

Conflict Statistics: toString

  • print more information when ConflictStatistics.Print is set to true

Revision 17acf0a by tomas-muller (7-May-2018 9:50 AM)

ID Convertor: constructor changed to public

Revision fbd0648 by tomas-muller (7-May-2018 9:48 AM)

Assets 6

@tomas-muller tomas-muller released this Apr 19, 2018 · 92 commits to master since this release

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

Revision 2786d3d by tomas-muller (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 (18-Apr-2018 4:18 PM)

Assets 6

@tomas-muller tomas-muller released this Mar 16, 2018 · 96 commits to master since this release

Student Scheduling: Disabled Sections

  • fixed XML save (section.enabled)

Revision f8e30fc by tomas-muller (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 (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 (16-Feb-2018 3:42 PM)

Assets 6
You can’t perform that action at this time.