Skip to content

UniTime 4.8 build 182

Latest
Compare
Choose a tag to compare
@tomas-muller tomas-muller released this 03 Feb 13:22
· 378 commits to master since this release

Student Scheduling

Student Scheduling Solver: Hard Distance Conflicts

  • Added an ability to make some distance conflicts hard (not allowed).
  • To enable, set the solver parameter Sectioning.HardDistanceConflict to true (defaults to false).
  • A distance conflict is considered hard when:
    • The distance between the two classes (or a class and an unavailability) is HardDistanceConflict.DistanceHardLimitInMinutes or more (defaults to 60).
    • The travel time exceeds the time for travel (break time + gap) by more than HardDistanceConflict.AllowedDistanceInMinutes (defaults to 30).
  • In other words, a distance conflict with a travel time of 60 or more minutes will be considered hard if the student has less than 30 minutes to travel between the two classes.

Scheduling Assistant, Dashboards: Hard/Long Distance Conflicts

  • Long Distance Conflicts: A distance conflict is considered long when the travel time is HardDistanceConflict.DistanceLongLimitInMinutes (default to 60) minutes.
    • Long-distance conflicts show a different icon in the user interface (a red racing car instead of a road runner).
  • When a student cannot enroll in a course due to a hard distance conflict, display a Conflicts with X warning message.
    • Just like when the course conflicts with another course X due to time overlaps.
  • Allow for hard distance conflicts when the student checks the "Include conflicting suggestions" toggle.

Course Timetabling

Instructional Offering Detail: Instructor Requirements

  • Better formatting of the Instructor Requirements table, especially when there is a column with a lot of text.

Distribution Preferences

  • Three new group constraints (distribution types) were added.
  • SAME_STUD_NODST: Students No Distance Constraint
    • This distribution is the same as the Same Students distribution, except there is no distance conflict checking and no work-day limit.
    • Also, the distribution gets ignored when there is the Ignore Student Conflicts distribution between the two classes.
    • To replace DIFF_TIME in General.AutoSameStudentsConstraint
      This constraint can be used as the Same Student Constraint in the solver configuration, e.g., in the interactive mode, replacing the Different Time constraint, which does not ignore cases when there are Ignore Student Conflicts between two classes in a parent-child relation.
  • DIFF_TIME_IGN_STUDS: Different Time + Ignore Student Conflicts
    • Combination of two constraints, Different Time and Ignore Student Conflicts.
    • Given classes cannot overlap in time, replacing any student conflicts between these classes.
    • When prohibited or (strongly) discouraged: every pair of classes in the constraint must overlap in time. Still, student conflicts are ignored.
  • FOLLOWING_DATES: Following Dates
    • Given classes must be taught on back-to-back dates and in the given order.
    • When prohibited or (strongly) discouraged: given classes must be taught on dates in the given order, with at least one day between the following classes.
    • Note: The primary use for this constraint is for classes that meet only once. The constraint cannot be satisfied when one of the meetings falls on a holiday and the other does not.

Curricula

  • Multiple Majors: Fixed a Hibernate issue when setting up a curriculum with multiple majors.

Instructor Unavailable Dates

  • Course Timetabling Solver: When checking for unavailable dates, consider the instructor's department.
    • This is to allow instructors to have different unavailable dates for each department they teach.
  • Class Assignment page: Do not list class times when the instructor is unavailable.
    • Either because they have Instructor Unavailable Dates set.
    • Or because instructor event availability is enabled (unitime.events.instructorUnavailability=true).
  • Instructional Offering Detail, Class Detail, Instructor Detail: Include instructor availability in the conflict checking.
    • That is, show a class conflicting warning when the class is placed at a time during which the instructor is unavailable due to an event or unavailable dates.

Instructor Scheduling

Instructor Distribution Preferences

  • Many course timetabling distributions (group constraints and flexible constraints) have been included in the instructor scheduling problem, namely
    • At Most N Hours A Day: Classes are to be placed in a way that there is no more than a given number of hours in any day.
    • Same Weeks: Given classes must be taught during the same weeks (i.e., must have the same date pattern).
    • N Hour Workday: Classes are to be placed in a way that there is no more than a given number of hours between the start of the first class and the end of the class, one on any day.
    • Minimal Gap Between Classes: Classes need to be placed in a way that there is at least a given number of minutes between any two of them.
    • Max Block: Given classes must be taught in a way there is a break between two blocks of classes.
    • Max Breaks: Limit the number of breaks between adjacent classes on a day.
    • Max Days: Limit the number of days of a week.
    • Break: There must be a break of a given length in a given time interval.
    • Max Weeks: Limit the number of weeks on which a class can take place.
    • Max Holes: Minimize the free time of an instructor during a day (between the first and the last class).
    • Max Half-Days: Limit the number of half-days in a week.
    • Max Consecutive Days: Limit the number of consecutive days of a week.
  • See https://help.unitime.org/additional-distribution-constraints for more details about the additional distribution constraint types.

Event Management

Events Personal Schedule: All Sessions

  • When the All Sessions flag is used on a personal schedule, I added an ability to look up classes, exams, and course-related events from all academic sessions.
  • By default, only (previous and past) academic sessions with the same academic initiative are considered.
  • Enable by setting unitime.events.personal.allSessions.skipSessionCheck to true (defaults false).

Administration

Hibernate Community Dialects

  • Added hibernate-community-dialects dependency to include additional dialects.
    • Namely, the org.hibernate.community.dialect.OracleLegacyDialect allows for older Oracle Database versions.