What's new in UniTime 4.0 Build 17
May 19, 2015
- BUG FIXES:
- Data Exchange: Session Restore
- Avoid conversion of a binary object to utf-8 and back.
- Student Scheduling Assistant: Authentication
- When authentication is required but the user login dialog is not allowed: fixed the case when the Login page was not loaded at times.
- Course Timetabling: Ignore Room Check
- Improved handing of locations that have the ignore room check toggle set:
- No overlaps are checked in such locations during commit.
- No committed placements (of other problems) nor other approved events are loaded as unavailabilities for such locations (ignore room check location is always available).
- UniTime Registration
- Main page: fixed the ability to register the UniTime instance.
New in UniTime 4.0 Build 12 (Apr 20, 2015)
- BUG FIXES:
- Online Student Scheduling Server
- Get course by name or by name and title: fix the case when there is a dash in the subject area abbreviation or a course number.
- Improved handling of the case when a student is enrolled into the same offering multiple times, under different course names.
- Course Timetabling: Database Load
- Ensure that an instructor distribution preference is loaded in only once when the following two conditions are met:
- a) inherited instructor preferences is enabled on an external department,
- b) both the external department and the instructor's department are being loaded in.
- Data Exchange: Session Restore
- Fixed ability to import a new instructional type (id was not set).
- OTHER IMPROVEMENTS:
- Online Student Scheduling: Eligibility Check
- When there is no student record matching with the external id of the authenticated user:
- "You are not registered as a student in {0}." message changed to "You are not eligible to register in {0}.".
- Do not display the message when in the assistant mode (enrollment is not enabled).
- Solution Reports: Violated Distribution Preferences
- Added a column counting the number of violations (violated pairs).
- Include flexible group constraints in the list.
- Suggestions: Flexible Constraints
- Include flexible group constraints in the Distribution Preferences counters.
- Include flexible group constraints on the Violated Constraints list.
- Batch Student Sectioning: Database Loader
- Minimal Perturbation Problem: Add current class assignments as selected choices.
- This helps keeping students close to their original enrolment when the original enrolment is not in the domain.
- Added ability to load student groups as request groups.
- Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true, default is false.
- Solver parameter StudentWeights.SameGroup (defaults to 0.1) can be used to change the impact of the same group criterion.
- Request Groups solver report has been also added.
- Localization
- Added ability to let users to choose the locale by defining the unitime.locale manager settings.
- HQL Reports: Reference Tables
- Added ability to include any reference table (room type, distribution type, etc.) as query parameter.
- Scripts: Import / Export XML
- Added ability to export a script in XML format.
- Added ability to import XML with one ore more scripts.
- Events: Standard Notes
- Added Select button when selecting a standard note (both Standard Notes dialog and Approval dialog).
- This fixes the issue of not being able to select a standard note on a mobile device (due to the inability to double click).
- CAS Authentication
- Added ability to always translate the returned external user id by setting unitime.authentication.cas.id-translate to true (defaults to false).
- Added ability to lookup multiple attributes in the CAS ticket (the unitime.authentication.cas.id-translate can contain a comma separated list of attributes).
- Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can contain a comma separated list of true and false values, one for each attribute).
- External User Id Translation
- Added ability to translate user names (as returned by the authentication) to the external user ids that are used by UniTime.
- Configuration (default SQLs are using the users table):
- # Enable custom SQL user id translation
- tmtbl.externalUid.translation=org.unitime.timetable.spring.security.CustomSQLExternalUidTran slation
- # SQL query converting user name to external user id
- unitime.custom.sql.uid2ext=select external_uid from %SCHEMA%.users where username = ?
- # SQL query converting external user id to user name
- unitime.custom.sql.ext2uid=select username from %SCHEMA%.users where external_uid = ?
- Events: Course Title
- Time Grid: Added ability to display course title in the header of an event in the time grid.
- This only happens when the application property unitime.events.grid_display_title is set to true (defaults to false, current behaviour).
- Only applies to class events (course related events and examination events can relate to multiple courses and can have multiple titles with ambiguous choice which one to display).
- When multiple course title exists, only the first one is displayed (e.g., in the case of a cross-list, it should be the title of the controlling course).
- Format: course title (instruction section)
- Example: Fundamentals of Biology II (Laboratory 12038-042)
- Events: ICS Export
- When the grid display title is enabled (see above), course title is used as event name (summary field).
- Added ability to include instructor names in the description of an event.
- Tis only happens when the application property unitime.events.ics_instructors_in_description is set to true (defaults to false, current behaviour). CPSolver updated to version 1.3.52 (was 1.3.47)
- Student Sectioning: Minimal Perturbation Problem
- Priority and equal weighting: added ability to minimise perturbations.
- Difference of an enrollment (from the initial one) is computed as a number between 0 (completely different) and 1 (the initial enrollment).
- It is computed as average using the following schema (over all sections of the enrollment):
- An initial section counts as 1,
- same choice section counts as 0.9 (parameter StudentWeights.SameChoice),
- same time section counts as 0.7 (parameter StudentWeights.SameTime),
- and different time section counts as 0.
- Non-initial enrollment weight is penalized with weight StudentWeights.Perturbation (defaults to 0.100) using the following formula
- weights *= (1
- difference * StudentWeights.Perturbation)
- When MPP is enabled, solution info contains the following three new properties:
- Perturbations: same section assigned (% of initial section assigned over all course requests with initial enrollment)
- Perturbations: same choice assigned (% of same choice section assigned over all course requests with initial enrollment)
- Perturbations: same time assigned (% of same time section assigned over all course requests with initial enrollment)
- Note: same choice means same time and instructor.
- Student Sectioning: Reservations
- If reservations are allowed to assign students over the limit during the batch student sectioning, do not count the enrollments with such reservations towards course, configuration, and section limits.
- This is to avoid issues with the order in which enrollemnts were made.
- Student Sectioning: Parallel Solver
- Course, Config, Section, and Reservation contexts now implement the CanInheritContext interface.
- This speeds up the creation of an inherited context.
- Batch Student Sectioning: Request Groups
- Added ability to keep students of the same group together.
- Measured as an average probability of two students (of a group) that are requesting the same course being given the same section (of the same subpart).
- There is a new weight (named StudentWeights.SameGroup, defaults to 0.1) expressing how much this criterion affects the student weight (in both priority and equal weighting).
- This means that if a student is being enrolled into a completely different section, weight of such an enrollment is decreased by 10%.
- (the metric reflects how much are the students spread between the sections of the course)
- Course Timetabling: Added MaxDays Flexible Constraint
- The MaxDays constraint limits the number of days of week during which the given set of classes are taught.
- It has one parameters: a maximal number of week days during which the given set of classes can be placed.
- For instance, reference _MaxDays:2_ translates to a maximum number of 2 days a week.
New in UniTime 4.0 Build 2 (Mar 26, 2015)
- Organizational Changes:
- The Apereo Foundation
- This is the first release under the Apereo Foundation.
- License was changed to the Apache Software License (ASL), Version 2.0.
- This release has the same features as UniTime 3.5 build 209.
New in UniTime 3.5 Build 210 (Mar 3, 2015)
- Bug Fixes:
- Session Roll Forward:
- Distribution Preferences:
- fixed rolling forward of distribution preferences when an academic session is rolled forward multiple times.
- There can be multiple distribution preferences with the same value of the uniqueIdRolledForwardFrom attribute, one for each target academic session.
- Examination Timetabling:
- Load Availabilities:
- ignore class event meetings that are cancelled.
- Event Management:
- Course Related Events: class selection corrected when trying to select a class that has a parent class.
- Only top level classes showed up in the Class Number drop down.
- iCalendar Export: fixed SEQUENCE and DTSTAMP attributes in the iCalendar feed.
- This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC 5545).
- Online Student Scheduling:
- Online Scheduling Reports: fixed null exception thrown when there is a student with free time request.
- Course Timetabling:
- Database Save: Fixed SuspectedException thrown during save of the conflict statistics under certain condition.
- If run in a cluster, the remembered address of the web-server gets invalid when the web-server is restarted.
- Group Constraint: Fixed an exception that can be thrown during the purge invalid placement phase because of a hard back-to-back constraint.
- Rooms:
- Edit Room Groups / Features (accessible from the Room Detail page): fixed the problem of removing the last departmental room feature or group.
- It was not possible to remove the last departmental room feature or room group using this page because the relation between the feature / group and the location was not updated on both sides in this particular case.
- The other page (Edit Room Feature / Group) did not have the problem.
- Other Improvements:
- Suggestions:
- When a placement that conflicts with itself is selected, display the selected assignments and the conflict table, but no Assign button.
- This is to give the user more information on why the selected assignment cannot be used.
- CAS Authentication:
- Added ability to provide user external id and full name from the CAS response attributes.
- Event Management
- Email Confirmation: Added ability to CC event managers in the confirmation email.
- This is only enabled when the unitime.email.event.managers application property is set to true (default is false).
- If set to true, all timetable managers that are associated with the event department of a room in the event and which have an event management role (that is a role with Event Lookup Contact permission) with the receive emails toggle checked are carbon copied on the event confirmation email.
- Data Entry:
- Classes, Instructional Offerings: Added ability to highlight preferences that are set directly on classes.
- Preferences that are set directly on classes have light yellow background.
- This is only enabled when the unitime.preferences.highlightClassPrefs property is set to true (default is false).
- Preference owner (class, scheduling subpart, instructor, etc.) is also mentioned in the preference tooltip (this feature is always on).
- Multiple Class Setup: Added ability to edit class sufixes (labeled as External Ids in the user interface).
- This is only enabled when the tmtbl.class_setup.edit_external_ids property is set to true (default is false).
- Examination Timetabling
- PDF Reports: Added compact mode for the period chart.
- No section information is printed, but the page fits up to 6 columns instead of just 4.
New in UniTime 3.5 Build 196 (Jan 26, 2015)
- BUG FIXES:
- SESSION ROLL FORWARD:
- Distribution Preferences: fixed rolling forward of distribution preferences when an academic session is rolled forward multiple times.
- There can be multiple distribution preferences with the same value of the uniqueIdRolledForwardFrom attribute, one for each target academic session.
- EXAMINATION TIMETABLING:
- Load Availabilities: ignore class event meetings that are cancelled.
- EVENT MANAGEMENT:
- Course Related Events: class selection corrected when trying to select a class that has a parent class.
- Only top level classes showed up in the Class Number drop down.
- iCalendar Export: fixed SEQUENCE and DTSTAMP attributes in the iCalendar feed.
- This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC 5545).
- ONLINE STUDENT SCHEDULING:
- Online Scheduling Reports: fixed null exception thrown when there is a student with free time request. Other Improvements
- SUGGESTIONS:
- When a placement that conflicts with itself is selected, display the selected assignments and the conflict table, but no Assign button.
- This is to give the user more information on why the selected assignment cannot be used.
- CAS AUTHENTICATION:
- Added ability to provide user external id and full name from the CAS response attributes.
- EVENT MANAGEMENT:
- Email Confirmation: Added ability to CC event managers in the confirmation email.
- This is only enabled when the unitime.email.event.managers application property is set to true (default is false).
- If set to true, all timetable managers that are associated with the event department of a room in the event and which have an event management role (that is a role with Event Lookup Contact permission) with the receive emails toggle checked are carbon copied on the event confirmation email.
- DATA ENTRY:
- Classes, Instructional Offerings: Added ability to highlight preferences that are set directly on classes.
- Preferences that are set directly on classes have light yellow background.
- This is only enabled when the unitime.preferences.highlightClassPrefs property is set to true (default is false).
- Preference owner (class, scheduling subpart, instructor, etc.) is also mentioned in the preference tooltip (this feature is always on).
New in UniTime 3.5 Build 187 (Dec 29, 2014)
- TECHNOLOGY UPDATE:
- CLUSTERING:
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
- Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
- Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
- To enable replication, set unitime.enrollment.server.replicated to true.
- CONSTRAINT SOLVER:
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
- Mobile
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
- Mobile page layout is using less tables, and there is a new menu. Student Scheduling
- OVER-EXPECTED CRITERION:
- Added ability to provide a custom criterion that decides whether a class is over-expected or not.
- Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
- STUDENT SCHEDULING REPORTS:
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
- All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
- STUDENT SCHEDULING DASHBOARD:
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
- Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
- Student Scheduling Assistant
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they are needed.
- Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
- CUSTOM STUDENT ENROLLMENT INTERFACE:
- Added an ability to provide a custom class that synchronizes the enrollments with an external system.
- The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
- INSTRUCTOR PREFERENCES:
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
- Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
- If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
- Hierarchical Preference Inheritance
- If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
- Lec a
- Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
- This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
- Instructor Unavailability
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
- This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
- COURSE CREDIT:
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
- EVENT MANAGEMENT: NO ROOM CHECK
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
- Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
- ROOMS:
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
- APPLICATION PROPERTIES:
- All (or most of) application properties are now registered and used through the ApplicationProperty enum.
- This allows for an easy place to see all configuration properties, define their default values and short descriptions.
- Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
- Data Exchange
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class enrollments.
- Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
- When in incremental mode, students that are not included in the file are completely ignored.
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values:
- update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
- nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- CAS AUTHENTICATION:
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
- LOCALIZATION:
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
- Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale).
- CONSTRAINT SOLVER:
- Course Timetabling: Deterministic Student Sectioning Customization
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
- COURSE TIMETABLING: GROUP CONSTRAINT:
- Forward checking extended to all hard group constraints (not only meet-together).
- It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
- COURSE TIMETABLING:
- MaxBreaks constraint MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- COURSE TIMETABLING: CLASS WEIGHTS:
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
- This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
- Default Class Weights (default): all class weights are 1.0 (so, all works as before).
- Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
- IFS: NEIGHBORHOOD SEARCH ALGORITHMS:
- Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable.
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
- Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
- This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
- Student Scheduling: Required Reservation Constraint
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- COURSE TIMETABLING:
- Room RatioChanged the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
- While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
- E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
- COURSE TIMETABLING: MAXWEEKS CONSTRAINT:
- The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
- It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
- Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
- (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
- If the second parameter is zero, all days of week are considered.
- Course Timetabling: Classes with multiple rooms
- For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
- Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
- COURSE TIMETABLING: MAX N HOURS A DAY CONSTRAINT:
- Added ability to consider date patterns (individual weeks).
- When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
- For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
- COURSE TIMETABLING: DISTRIBUTION PREFERENCES:
- Added structure One of Each
- The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
- For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
- If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.
New in UniTime 3.5 Build 169 RC 2 (Nov 5, 2014)
- CLUSTERING:
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
- Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
- Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
- To enable replication, set unitime.enrollment.server.replicated to true.
- CONSTRAINT SOLVER:
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
- MOBILE:
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
- Mobile page layout is using less tables, and there is a new menu.
- STUDENT SCHEDULING:
- Over-Expected Criterion
- Added ability to provide a custom criterion that decides whether a class is over-expected or not.
- Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
- STUDENT SCHEDULING REPORTS:
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
- All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
- STUDENT SCHEDULING DASHBOARD:
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
- Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
- STUDENT STUDENT ASSISTANT:
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they are needed.
- Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
- CUSTOM STUDENT ENROLLMENT INTERFACE:
- Added an ability to provide a custom class that synchronizes the enrollments with an external system.
- The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
- INSTRUCTOR PREFERENCES:
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
- Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
- If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
- HIERARCHICAL PREFERENCE INHERITANCE:
- If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
- Lec a
- Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
- This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
- INSTRUCTOR UNAVAILABILITY:
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
- This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
- COURSE CREDIT:
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
- EVENT MANAGEMENT - NO ROOM CHECK:
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
- Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
- ROOMS:
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
- APPLICATION PROPERTIES:
- All (or most of) application properties are now registered and used through the ApplicationProperty enum.
- This allows for an easy place to see all configuration properties, define their default values and short descriptions.
- Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
- DATA EXCHANGE:
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class enrollments.
- Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
- When in incremental mode, students that are not included in the file are completely ignored.
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values:
- update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
- nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- CAS AUTHENTIFICATION:
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
- LOCALIZATION:
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
- Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale). Constraint Solver
- COURSE TIMETABLING - DETERMINISTIC STUDENT SECTIONING CUSTOMIZATION:
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
- COURSE TIMETABLING - GROUP CONSTRAINT:
- Forward checking extended to all hard group constraints (not only meet-together).
- It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
- COURSE TIMETABLING - MAXBREAKS CONSTRAINT:
- MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- COURSE TIMETABLING - THE:
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
- This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
- Default Class Weights (default): all class weights are 1.0 (so, all works as before).
- Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
- IFS - NEIGHBORHOOD SEARCH ALGORITHM:
- Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable.
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
- Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
- This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
- STUDENT SCHEDULING - REQUIRED RESERVATION CONSTRAINT:
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- Course Timetabling: Room Ratio
- Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
- While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
- E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
- COURSE TIMETABLING - MAXWEEKS CONSTRAINT:
- The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
- It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
- Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
- (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
- If the second parameter is zero, all days of week are considered.
- Course Timetabling: Classes with multiple rooms
- For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
- Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
- Course Timetabling: Max N Hours A Day constraint
- Added ability to consider date patterns (individual weeks).
- When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
- For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
- Course Timetabling: Distribution Preferences
- Added structure One of Each
- The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
- For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
- If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes
- of the scheduling subpart.
New in UniTime 3.4 Build 321 (Oct 30, 2014)
- Bug Fixes:
- Application Properties: Base Path
- Fixed an issue that sometimes happens on Windows that could cause UniTime to fail to start (could not instantiate bean SpringConfigurationProperties).
New in UniTime 3.5 Build 164 RC 1 (Oct 25, 2014)
- Clustering:
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
- Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
- Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
- To enable replication, set unitime.enrollment.server.replicated to true.
- Constraint Solver:
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
- Mobile:
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
- Mobile page layout is using less tables, and there is a new menu. Student Scheduling
- Over-Expected Criterion
- Added ability to provide a custom criterion that decides whether a class is over-expected or not.
- Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
- Student Scheduling Reports:
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
- All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
- Student Scheduling Dashboard
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
- Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
- Student Scheduling Assistant
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they are needed.
- Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
- Custom Student Enrollment Interface
- Added an ability to provide a custom class that synchronizes the enrollments with an external system.
- The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful) interface. Course Timetabling
- Instructor Preferences
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
- Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
- If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
- Hierarchical Preference Inheritance
- If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec
- Lec a
- Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
- This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
- Instructor Unavailability
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
- This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
- Course Credit:
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page. Other Changes
- Event Management:
- No Room Check
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
- Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
- Rooms
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
- Application Properties
- All (or most of) application properties are now registered and used through the ApplicationProperty enum.
- This allows for an easy place to see all configuration properties, define their default values and short descriptions.
- Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
- Data Exchange
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class enrollments.
- Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
- When in incremental mode, students that are not included in the file are completely ignored.
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values:
- update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
- nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- CAS Authentication
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
- Localization
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
- Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale). Constraint Solver
- Course Timetabling: Deterministic Student Sectioning Customization
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
- Course Timetabling: Group Constraint
- Forward checking extended to all hard group constraints (not only meet-together).
- It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
- Course Timetabling: MaxBreaks constraint
- MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- Course Timetabling: Class Weights
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
- This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
- Default Class Weights (default): all class weights are 1.0 (so, all works as before).
- Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
- IFS: Neighborhood Search Algorithms
- Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable.
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
- Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
- This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
- Student Scheduling: Required Reservation Constraint
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- Course Timetabling: Room Ratio
- Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
- While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
- E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
- Course Timetabling: MaxWeeks constraint
- The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
- It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
- Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
- (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
- If the second parameter is zero, all days of week are considered.
- Course Timetabling: Classes with multiple rooms
- For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
- Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
- Course Timetabling: Max N Hours A Day constraint
- Added ability to consider date patterns (individual weeks).
- When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
- For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
- Course Timetabling: Distribution Preferences
- Added structure One of Each
- The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
- For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
- If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.
New in UniTime 3.5 Build 153 Beta 1 (Oct 2, 2014)
- UniTime 3.5.153 release notes
- TECHNOLOGY UPDATE:
- Clustering:
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
- Clustering can be disabled by setting application properties unitime.hibernate.cluster
- (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
- Online student scheduling server can now run on multiple machines at once, with the data
- asynchronously replicated (using infinispan) and one machine being the master (responsible for
- all the updates).
- To enable replication, set unitime.enrollment.server.replicated to true.
- Constraint Solver:
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
- Mobile:
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile
- (tables or phone) devices.
- Mobile page layout is using less tables, and there is a new menu.
- STUDENT SCHEDULING:
- Over-Expected Criterion:
- Added ability to provide a custom criterion that decides whether a class is over-expected or
- not.
- Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
- Student Scheduling Reports:
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report,
- conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
- All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
- Student Scheduling Dashboard:
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
- Filter text field was replaced by the new filter box component (which is used on the events
- page, e.g., as Event Filter or Room Filter).
- Student Scheduling Assistant:
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they
- are needed.
- Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
- Custom Student Enrollment Interface:
- Added an ability to provide a custom class that synchronizes the enrollments with an external
- system.
- The interface can be used to check student's eligibility (an additional step in the
- CheckEligibility action).
- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the
- EnrollStudent action).
- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful)
- interface.
- COURSE TIMETABLING:
- Instructor Preferences:
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether
- instructor preferences are to be inherited or not.
- Applicable room and building preferences, global room features and groups can now be inherited
- onto an externally managed class as well.
- If the externally managed department does not allow required time and/or room preferences, the
- instructor preferences are weakened accordingly.
- Hierarchical Preference Inheritance:
- If there are two or more scheduling subparts in a parent-child relation with the same
- instructional type (e.g., Lec - Lec a - Lec b stacked underneath), inherit preferences and the
- date pattern from the parent subpart whenever possible.
- This behavior can be enabled by setting application property
- unitime.preferences.hierarchicalInheritance to true.
- Instructor Unavailability:
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
- This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the
- default room availability service has been extended to provide instructor availability from
- the events as described above.
- Course Credit:
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student
- Scheduling Assistant page.
- Other Changes
- - Event Management: No Room Check
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
- Meetings that are in a room with no room check never show any conflicts and such meetings also
- never show among conflicting events.
- Rooms:
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
- Application Properties:
- All (or most of) application properties are now registered and used through the
- ApplicationProperty enum.
- This allows for an easy place to see all configuration properties, define their default values and short descriptions.
- Application Configuration page was modified to include all registered properties, including
- their defaults and descriptions.
- Data Exchange:
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class
- enrollments.
- Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
- When in incremental mode, students that are not included in the file are completely ignored.
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values: - update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
- nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- CAS Authentication:
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml
- (see the comments there).
- Localization:
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day
- before moth) formatting.
- Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time
- format (based on the locale).
- CONSTRAINT SOLVER:
- Course Timetabling: Deterministic Student Sectioning Customization:
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
- Course Timetabling: Group Constraint:
- Forward checking extended to all hard group constraints (not only meet-together).
- It is possible to avoid forward check on variables with large domains (parameter
- ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter
- ForwardCheck.MaxDepth, defaults to 2).
- Course Timetabling: MaxBreaks constraint:
- MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor
- on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two
- classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- Course Timetabling: Class Weights:
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have
- a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over
- optional courses in the curriculum timetabling, if ever needed.
- This feature can be enabled by the solver parameter Class Weights, two implementations are now
- available:
- Default Class Weights (default): all class weights are 1.0 (so, all works as before).
- Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
- IFS: Neighborhood Search Algorithms:
- Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver,
- with three problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable.
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
- Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or
- simulated annealing in a similar way as the examination solver (or the ITC competition solver)
- does.
- This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
- Student Scheduling: Required Reservation Constraint:
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an
- enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- Course Timetabling: Room Ratio
- Changed the computation of minimal room size to round(room ratio x class limit), instead of
- the previous ceil(room ratio x class limit).
- While using ceiling instead of round has some merit, this fixes the ongoing issues with the
- computation.
- E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
- Course Timetabling: MaxWeeks constraint
- The MaxWeeks constraint limits the number of weeks during which the given set of classes are
- taught.
- It has two parameters: a maximal number of weeks during which the given set of classes can be
- placed and a day code indicating what days of week are considered.
- Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that
- are placed on Fridays and Saturdays
- (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
- If the second parameter is zero, all days of week are considered.
- Course Timetabling: Classes with multiple rooms
- For each time, limit the number of room combinations (parameter General.MaxRoomCombinations,
- defaults to 100).
- Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
- Course Timetabling: Max N Hours A Day constraint
- Added ability to consider date patterns (individual weeks).
- When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
- Course Timetabling: Distribution Preferences
- Added structure One of Each
- The distribution constraint is created for each combination of classes such that one class is taken from each line representing a class or a scheduling subpart
- For instance, if the constraint is put between three scheduling subparts, a constraint will be posted between each combination of three classes, each from one of the three subparts.
- If a constraint is put between a class and a scheduling subpart, there will be a binary constraint posted between the class and each of the classes of the scheduling subpart.
New in UniTime 3.5 Build 136 Beta (Sep 9, 2014)
- Technology Update
- Clustering
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote solver server).
- Clustering can be disabled by setting application properties unitime.hibernate.cluster (Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false.
- Online student scheduling server can now run on multiple machines at once, with the data asynchronously replicated (using infinispan) and one machine being the master (responsible for all the updates).
- To enable replication, set unitime.enrollment.server.replicated to true.
- Constraint Solver
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
- Mobile
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile (tables or phone) devices.
- Mobile page layout is using less tables, and there is a new menu.
- Student Scheduling
- Over-Expected Criterion
- Added ability to provide a custom criterion that decides whether a class is over-expected or not.
- Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by more than 10% if there are no other sections meeting their schedule.
- Student Scheduling Reports
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports) and online (page Online Student Scheduling Reports, menu Students > Online Scheduling Reports).
- All the existing current reports are available (time conflicts, availability conflicts, unbalanced classes, distance conflicts, time overlaps).
- Student Scheduling Dashboard
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for reserved space.
- Filter text field was replaced by the new filter box component (which is used on the events page, e.g., as Event Filter or Room Filter).
- Student Scheduling Assistant
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they are needed.
- Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
- Custom Student Enrollment Interface
- Added an ability to provide a custom class that synchronizes the enrollments with an external system.
- The interface can be used to check student's eligibility (an additional step in the CheckEligibility action).
- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the EnrollStudent action).
- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well (appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful) interface.
- Course Timetabling
- Instructor Preferences
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether instructor preferences are to be inherited or not.
- Applicable room and building preferences, global room features and groups can now be inherited onto an externally managed class as well.
- If the externally managed department does not allow required time and/or room preferences, the instructor preferences are weakened accordingly.
- Hierarchical Preference Inheritance
- If there are two or more scheduling subparts in a parent-child relation with the same instructional type (e.g., Lec Lec a Lec b stacked underneath), inherit preferences and the date pattern from the parent subpart whenever possible.
- This behavior can be enabled by setting application property unitime.preferences.hierarchicalInheritance to true.
- Instructor Unavailability
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the additional contacts of the event.
- This feature can be enabled by setting the application property unitime.events.instructorUnavailability to true (default is false).
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the default room availability service has been extended to provide instructor availability from the events as described above.
- Course Credit
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student Scheduling Assistant page.
- Other Changes
- Event Management: No Room Check
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the room name is in italic in the Meetings table on the Add / Edit Event pages.
- Meetings that are in a room with no room check never show any conflicts and such meetings also never show among conflicting events.
- Rooms
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
- Application Properties
- All (or most of) application properties are now registered and used through the ApplicationProperty enum.
- This allows for an easy place to see all configuration properties, define their default values and short descriptions.
- Application Configuration page was modified to include all registered properties, including their defaults and descriptions.
- Data Exchange
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class enrollments.
- Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in the XML are deleted (this is the default).
- When in incremental mode, students that are not included in the file are completely ignored.
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values:
- update: enrollments are updated to point to new course requests, orphaned enrollments (enrollments without course requests) are deleted (this is the default)
- nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- CAS Authentication
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see the comments there).
- Localization
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day before moth) formatting.
- Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time format (based on the locale).
- Constraint Solver
- Course Timetabling: Deterministic Student Sectioning Customization
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.DeterministicStudentSectioning
- Course Timetabling: Group Constraint
- Forward checking extended to all hard group constraints (not only meet-together).
- It is possible to avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000) and to limit the depth (parameter ForwardCheck.MaxDepth, defaults to 2).
- Course Timetabling: MaxBreaks constraint
- MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- Course Timetabling: Class Weights
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
- This feature can be enabled by the solver parameter Class Weights, two implementations are now available:
- Default Class Weights (default): all class weights are 1.0 (so, all works as before).
- Average Hours A Week Class Weights: a weight of a class is estimated by the average number of hours it takes during the academic session.
- IFS: Neighborhood Search Algorithms
- Added a general versions of Hill Climber, Great Deluge, and Simulated Annealing to the solver, with three problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable.
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one).
- Suggestion move: a variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
- This algorithm is enabled by setting the Search Algorithm solver parameter to Experimental.
- Student Scheduling: Required Reservation Constraint
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- Course Timetabling: Room Ratio
- Changed the computation of minimal room size to round(room ratio x class limit), instead of the previous ceil(room ratio x class limit).
- While using ceiling instead of round has some merit, this fixes the ongoing issues with the computation.
- E.g., minimal room size of a class with limit 25 and room ratio 0.6 was 16 (as 0.6f * 25 = 15.000001 in Java) instead of the expected 15.
- Course Timetabling: MaxWeeks constraint
- The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
- It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day code indicating what days of week are considered.
- Reference _MaxWeeks:3:48_ translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays
- (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday)
- If the second parameter is zero, all days of week are considered.
- Course Timetabling: Classes with multiple rooms
- For each time, limit the number of room combinations (parameter General.MaxRoomCombinations, defaults to 100).
- Domain is dynamic (not cached) in this case, preferring rooms that are available for the given time (for which the room combinations are generated).
- Course Timetabling: Max N Hours A Day constraint
- Added ability to consider date patterns (individual weeks).
- When solver parameter MaxNHoursADay.ConsiderDatePatterns is set to true (this is also the new default).
- For former behavior, set MaxNHoursADay.ConsiderDatePatterns to false.
New in UniTime 3.4 Build 320 (Sep 9, 2014)
- Bug Fixes:
- Add Event
- Fixed the behavior of the "contact information changed" confirmation when an academic session is changed.
- Original contact got incorrectly reset to the current value of the main contact when the academic session was changed.
- Examination Detail: Enrollment Table
- Fixed the link when clicking on another exam of a student (from his/her examination schedule).
- The link was broken in Firefox, but it worked fine in Chrome and Safari.
- Buildings: Update Data
- When update of room departments is enabled for existing rooms (unitime.external.room.update.existing and unitime.external.room.update.existing.departments are set to true):
- Reset the list of departments to what is set in the external room departments table (instead of just adding new departments from the relation).
- This fixes the issue of adding the same department into the relation every time the Update Data is clicked.
- Data Exchange: Academic Session Restore
- Fixed import of travel times (location ids were not properly translated).
- Add Instructor
- Fixed a Tomcat issue (page fails to compile with NoSuchElementException when Apache Tomcat 7.0.50 or later is used).
- See https://issues.apache.org/bugzilla/show_bug.cgi?id=56529 for more details (NoSuchElementException for attribute with empty string in custom tag).
- Data Exchange: Session Restore
- Fix Location.managerIds during restore.
- It needs to list unique ids of the newly created departments, not the exported value.
- Other Improvements
- Examination Detail: Enrollments Table
- Examinations for a student dialog: added a column (named Conflict) displaying examination conflicts.
- Only course of the conflicting exam is displayed, following the conflict color coding (direct conflict in red, >2 exams a day in orange, back-to-back in yellow).
- More information is available in mouse-over tooltip.
- Conflicting class and course related events are displayed as well, also in red, with just the event name.
- The Conflict column is only visible if there is at least one examination conflict in the student's schedule.
- Events: Time Grid
- Room details popup is shown whenever it is allowed to select some time in a room (mouse cursor is a cross).
- Examination PDF Reports: Abbreviated Schedule, Individual Schedule, Instructor / Student
- Conflicts, Schedule by Course / Period / Room, Period Chart
- Subject field increased to 7 characters.
- Course (number) field increased to 8 characters.
- Section field increased to 9 characters.
- Few additional adjustments to accommodate for the above changes.
- Session Roll Forward
- Do not check the target session on the SessionRollForward permission in the permission check.
- This change allows a session administrator role to do the first step of the roll forward (there are no managers in the target academic session yet).
- Constraint Solver Update
- Student Scheduling: Reservations
- Reservations that allow assignment over the class / configuration / course limit (i.e., individual reservations) have no limit cap.
- Student Scheduling: Save XML
- Fixed a null exception when the given file has no parent.
- Ensure that student weights are formated with US locale (i.e., can be parsed using Float.valueOf()).
- Student Sectioning Model
- Extended info: Added ability to display a list of unbalanced sections
- Maximal number of unbalanced sections to display is given by solver parameter Info.ListDisbalancedSections, defaults to zero.
- Student Sectioning Reports
- Added an interface that is implemented by all the reports (StudentSectioningReport).
- Added time / availability conflicts report: unlike the existing course conflict report, conflicts are counted between individual classes.
- Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Student Scheduling: Required Reservation constraint added
- This global constraint ensures that reservations that must be used are used.
- That is, an enrollment is conflicting when there is a reservation for the student that must be used, but the given enrollment does not use it.
- While the domain of the course request already does not allow for such enrollments, such an enrollment can be loaded in from the database or XML.
- This constraint is to prevent assignment of such invalid enrollments.
- Student Sectioning: Student Choice Order
- When the new solver property StudentChoiceOrder.Fast is set to true, estimate the number of choices in an offering simply by multiplying sizes of subparts that have no children.
- This is turned on by default.
- Student Sectioning: Course Request
- Added a new solver parameter Sectioning.MaxDomainSize (defaults to -1) which, if set to a positive integer, effectively limits the domain size of a course request.
- This means that offerings with hundreds of thousands of possible enrollments will only return a subset of the possible enrollments in the domain.
- Also, an effort was made (in CourseRequest.computeEnrollments(...)) to spread the returned enrollments evenly across the (original/huge) domain.
- Distance Metrics
- Synchronize access to distance cache and travel times to improve thread safety.
- IFS: neighborhood search algorithms
- Added a general versions of hill climber, great deluge, and simulated annealing to the solver.
- With two problem independent neighboorhoods:
- Random move just picks a random unconflicting value to a variable
- Random swap tries to resolve all possible conflicts (unlike with suggestions there is no limit on depth, however, no new conflict can be created by resolving an existing one)
- Added a "simple search" algorithm that combines the ifs, hill climber, and great deluge or simulated annealing in a similar way as the examination solver (or the ITC competition solver) does.
- Course Timetabling: Added a few problem dependent neighborhoods (only time or room is changed or swapped).
- Added suggestion move
- A variable is selected randomly, a limited depth backtracking is used to find a possible change.
- Unlike in NeighbourSelectionWithSuggestions, the very first found suggestion is returned.
- Use construction or IFS heuristics whenever there are unassigned variables.
- Bigger neigbourhoods (swap / suggestion moves) limited by a time limit (defaults to 200ms)
- If the limits is reached, the number of attempts is reduced to 1.
- IFS: Hill Climber
- Added ability not to set the HC mode on the neigbhourhoods.
- In HC mode, the neighbourhoods (that support this feature) avoid returning worsening moves.
- This, while improving the quality of the provided neighbourhoods, can slow down the sovler quite a bit in certain situations.
- IFS: Step Counting Hill Climber
- Implemented SCHC algorithm.
- Inlike with the ordinary hill climber, there is a bound.
- The bound is updated (to the value of the current solution) after a given number of moves.
- Based on the given mode, either all moves, only accepted moves, or only improving moves are counted.
- Weakening Constraints
- Moved weakening of constraints into the standard neighbor selection (more general).
- Also weaken all related weakening constraints when no value cannot be selected for the selected variable.
- Course Timetable: Student Sectioning
- Added ability to customize initial and final student sectioning.
- All sectioning functions (that are needed in course timetabling) are accessed through TimetableModel.getStudentSectioning() interface.
- Default (existing sectioning functionality) is wrapped with the DefaultStudentSectioning class, a custom sectioning can be provided by StudentSectioning.Class parameter.
- Course Timetabling: Deterministic Student Sectioning
- Deterministic implementation of the initial student sectioning.
- This class assign students to groups in a deterministic way:
- Students are ordered by their academic information (curriculum) and unique ids and assigned in this order to the first available group (configuration or lecture).
- Course Timetabling: Group Constraint Forward Checking
- Extend forward checking to all hard group constraints (not only meet-together).
- Also include forward checking when inConflict method is used (to be consistent with computeConflicts).
- Improved forward checking routine to avoid unnecessary pair checks.
- Limit the depth of the forward checking (to avoid spending too much time in there).
- Avoid forward check on variables with large domains (parameter ForwardCheck.MaxDomainSize, defaults to 1000).
- Course Timetabling: MaxBreaks constraint
- The MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
- It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
- For example, reference _MaxBreaks:1:30_ translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes a part.
- Course Timetabling: XML Save
- Ensure that student weights are formated with US locale (i.e., can be parsed using Float.valueOf()).
- Course Timetabling: fixing (complete) solution phase
- Limit the number of fixes by only fixing a new best solution if it was found more than 5000 iterations away from the last best solution.
- Moved the parameters from the constructor to the initSolver method (to ensure that the parameters are properly set every time the solver starts).
- Added a few parameters to be able enable / disable fix solution phase, or to define how often it can be executed.
- Few more tweaks in the computation of the incremental change of the criterion.
- Course Timetabling: Group / Flexible Constraint
- Do not return a penalty when the constraint is hard (must be satisfied).
- Course Timetabling: Useless Half Hours, Flexible Constraint, Broken Time Patterns, and Distribution Preferences criteria
- Corrected computation of the incremental change of the criterion (wrong value was returned in some cases).
- Course Timetabling: Class Weights
- Added an ability to provide each class with a weight.
- This weight is used in the time and room preferences (the preference is weighted by the "importance" of the class).
- For instance, this can be used for classes that are only offered once in a semester to have a lower weight.
- So that there is an incentive to put a class that is taught every week in a preferred time even if it bumps two classes (that only meet once) from their preferred times.
- This also allows for things like giving compulsory or elective courses more weight over optional courses in the curriculum timetabling, if ever needed.
- Course Timetabling: Group Constraints
- Cache TimeLocation.getFirstMeeting.
- This significantly improves the evaluation of precedence constraints.
- Back-to-back sequence check: prefer conflict sets that do not contain the placement in question.
- Course Timetabling: Placement.getNotValidReason(Assignment)
- When the placement is invalid due to an instructor or a room that is not available, try to include the name of the conflicting event in the reason.
- Course Timetabling: Placement Validity Check (e.g. used in purging invalid values)
- Exclude weakening constraints from the check (a value that may become valid later in the search process should not be removed from the domain).
- Student Scheduling Assistant
- Display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
New in UniTime 3.2 Build 125 (Feb 21, 2011)
- User interface:
- Add/Edit Instructional Type
- Avoid "JspException: Cannot find bean under name itypesList" runtime exception when form validation fails.
- For instance, when a user attempts to create an instructional type with an existing IType.
- Instructional type that has children types cannot be deleted.
- Student Scheduling Assistant
- Free time requests on the Timetable view
- show free time statement in the top left corner of the red box.
- Data Exchange:
- Course Offering Import
- Fixed NonUniqueResultException when looking for a matching date pattern.
- There is nothing in the user interface preventing users to create two date patterns with the same type and dates (first matching one is used in this case).
- Only create "Week .." date patterns (out of event meeting dates) for classes imported using elements.
- Classes imported using datePattern attribute (of element) or using elements should keep their matching / generated patterns.
- Other Changes:
- Google Chrome Frame
- When Google Chrome Frame is used it tends to cache redirects (despite of all the expires, pragma, cache-control meta tags).
- To avoid caching, when chrome frame is detected, a timestamp parameter (named noCacheTS) is added to every redirect (overriding HttpsServletResponse.sendRedirect). - This should fix various navigation issues, e.g., going back and forth while creating a new event.
- Minor technology update
- GWT updated to version 2.2.0 (was 2.1.1)
- Constraint solver updated with the latest version (1.2.31)
- Added course reservations.
- Added ability to enroll students with individual reservation over the class / course / section limit.
- Fixed NullPointerException when last-like student course requests are involved (after a recent change (reservations), first last-like adept got ignored).
New in UniTime 3.2 Build 120 (Feb 2, 2011)
- User interface:
- Student Scheduling Assistant:
- Adopted to use the new priority weighting model
- adding penalization for sections without time assignment, over
- expected sections, and sections that have a different time or
- instructor than selected
- Only show Enroll button when it is available
- Show LoadingWidget while waiting
- Display free time requests as red background in the timetable grid
- Examination Timetable
- Date filter corrected for the case when session start date is in a different year than the period.
- Event Timetable:
- Room Timetable: Only show rooms that can be used for event management.
- Scheduling Subpart Detail / Edit
- Added student allow overlap toggle.
- If checked, students will be allowed to take classes from this
- subpart even when they are overlapping with other classes.
- Constraint Solver Update (CPSolver 1.2.29)
- Student Sectioning Solver:
- New priority weighting model:
- total student weight is between zero and one (one means student got
- the best schedule)
- weight of the given priority course is higher than sum of the
- remaining weights the student can get
- first alternative is better than the following course
- second alternative is better than the second following course
- distance conflicts are considered secondary (priorities should be
- maximized first), and only counted on the lower priority course
- time overlaps can cut up to 50% of the weight on both courses that
- overlap (when overlapping completely)
- if alternative sections are otherwise equal, the better balanced one
- is preferred
- New equal weighting model:
- all course (non alternative) requests have equal weight
- first alternatives have lower weight than first choices, but equal
- among themselves
- second alternatives have lower weight than first alternatives,
- alternative course requests than second alternatives
- distance conflicts are considered secondary, and only counted on
- the lower priority course
- time overlaps can cut up to 50% of the weight on both courses that
- overlap (when overlapping completely)
- if alternative sections are otherwise equal, the better balanced one
- is preferred
- Time overlaps:
- added ability for some classes to overlap (time overlap is
- minimized) -- to be defined on scheduling subparts
- minimize overlaps with free times (when those cannot be fully
- satisfied)
- Batch sectioning improvements:
- added a new priority based construction phase
- enforce course and configuration limits
- Section balancing:
- Small weight is removed from assignments that further dis-balance
- a section
- Small weight is added to assignments that better balance the section
- Target balance:
- Sections with limits: section limit x ( subpart enrollment /
- subpart limit )
- Unlimited sections: subpart enrollment / number of sections in
- the subpart
- Student weights parameters were added to solver configuration.
- Load information about whether student overlaps are allowed.
- Apache Tomcat 7 Compatibility Issues
- Query Log:
- Fixed the AbstractMethodError in QueryLogFilter (by changing the
- HttpServletRequestWrapper to be a Java Proxy)
- Various Pages:
- Corrected syntax to meet the new Tomcat 7 validation
- Bug Fixes:
- Course Timetabling Database Loader
- Avoid meetings outside of the session (IndexOutOfBoundsException:
- bitIndex < 0: -167)
- Other Changes:
- Data Exchange:
- Course Offering Import: student overlaps should be disabled by
- default.
New in UniTime 3.2 Build 107 (Dec 23, 2010)
- a better approach seems to be to set normalization decrease factor to 1.0 in a solver configuration (and alter the other time preference weights accordingly)
New in UniTime 3.2 Build 93 RC 3 (Dec 1, 2010)
- BUG FIXES & OTHER IMPROVEMENTS
- First Release of UniTime 3.2 (Release Candidate 3)
- Look & feel changes
- Menu on the top of the page or on the side
- Can be changed in user preferences (user.menu.style property)
- User / solver info -> solver, user, session components under page title
- Back button (does not work well in Chrome)
- Help page opens in a dialog
- A disclaimer message (in HTML format) can be added at the bottom of every page.
- Value of the application property tmtbl.page.disclaimer.
- Room & building coordinates can be in GPS
- A map showing the room's location can be displayed on the Room Detail page
- Edit pages can use Google maps to enter coordinates
- Non-university locations can have GPS coordinates set
- Rooms can ignore distances (not just non-university locations)
- More informative tooltips
- Events (all pages): show tooltip on locations including name, display name, room type, minimap,
- capacity, global groups and features
- Classes, Instructional Offerings: show enlarged version of the time preferences table as tooltip
- for time preferences icon
- Examinations: show enlarged version of the period preferences table as tooltip for period
- preferences icon
- Classes, Instructional Offerings, Examinations: show list of distribution objects in the tooltip
- of a distribution preference
- Classes, Instructional Offerings, Examinations: show a bigger tooltip for room and building preferences
- (including minimap and capacity, global room/features for rooms)
- Rooms: show a bigger tooltip for room sharing, exam period preferences, room and building names
- New version of people lookup dialog
- Show each person only once (merging information from various sources)
- Only people having external id are displayed (external id is used to merge contact information)
- Except on events, where people without external id are displayed in gray and at the bottom of the list
- It is now possible to search people by email as well
- Suggestions, Class Assignment, Examination Assignment, Date pattern preview, wiki help
- Use GWT-based dialog box instead of opening a new browser window
- Suggestions, Class/Examination Assignment -refresh the parent page when a new assignment is made
- Event Timetable
- Timetable of a room, person, department, curriculum, subject area
- Including all events, calendar-like time grid as well as list, export to iCalendar
- Solver changes
- Added ability to use GPS coordinates
- Back-to-back distance student conflict are now based on break times
- Course demand can be based on
- Last-like student enrollments
- Projected course demands (last-like + curriculum projections)
- Curriculum-based (with or without last-like information)
- Current student enrollments
- Student course requests
- Student sectioning in course timetabling changes
- Students can be moved among committed classes as well
- May or may not include courses that do not have any classes of the problem (default only for
- curriculum-based demands where students are made up)
- New features
- Curriculum-based Course Timetabling
- Curriculum Projections page
- Curricula / Curriculum Edit / Curriculum Details page
- Curricula section on Instructional Offering Details page
- Academic Areas, Classifications, Majors, Minors administrative page
- Curricula XML export/import
- Student Sectioning Assistant
- Still more of a demo as it only allows for class assignment changes (with no rescheduling)
- Student Course Requests page for collecting student pre-registration (must be enabled by
- session status)
- Other
- Update of underlying technologies
- Constraint Solver Library 1.2
- Hibernate 3.5, Struts 1.3.10, iText 5.0.2, GWT 2.1
- Unified sending of emails
- Replaced Hibernate Synchronizer with a home-made class
- Code cleanup
- Queue for roll-forward and data exchange
- Online documentation moved to help.unitime.org (powered by Google Sites)
- Added default implementation of LDAP external uid lookup, translation between uid and external id
- Excessive days/months on sessions/date patterns made more general.
- Few improvements to the Timetable (grid) page (e.g., show event when a solution from the database is
- displayed).
- Room allocation report (Solvers Reports page) improved (counting of weekly hour usage)
- Select Academic Session / Select User Role: table or roles / sessions made sortable, default order
- by session (last session first)
- Event Detail: added Inquire button (an email is sent, a message is added to events history); added
- ability to attach a file to a approve / inquiry / reject email
- Events / Meetings: added export to CSV; added enrollment counts for exam and course related events;
- added filter by day of week and time
- Woebegon example contains a new term (Fall 2010) with few example curricula defined
- Examination Assignment page, examination reports: for the sake of consistency, exam size (if set)
- overrides the number of students on an exam in all cases (not just for the examination solver)
- Exporting an iCalendar now produces a URL that can be shared.
- Manage Solvers: it is now possible to unload a (working) solver
- Hibernate configuration files: all table names are now in lower-case avoiding the need to set MySQL to
- case insensitive mode on Linux based systems
- Timetable: added ability to show/hide non-class events
- It is now possible to create an academic session over a whole year (but not longer than a year)
- Events: when filtering rooms by non-university location room type, added ability to select the room
- from a drop down box
- Rooms: added navigation
- Added optional registration
- License update to GNU General Public License, Version 3 (was Version 2)
- Added list of dependencies (including URLs, copyrights, and licenses)
- Added query log (Page Statistics page)
- Examinations: Added ability to automatically put a preference on an original building (i.e., building of
- a room in which the related class took place)
- Course timetabling solver: handling of meet with constraint improved
- Course offerings: course number can be in lower case (automatic conversion to upper case is disabled when
- tmtbl.courseNumber.upperCase property is set to false)
- Fixes
- All recent fixes of UniTime 3.1 are included (see below)
- Personal Schedule -fixed the ability to change sessions for an administrator looking up a student's schedule
- Fixed a problem in people lookup (single quotation marks were not escaped)
- Preview of a date pattern -window size increased to fit more months
- Delete Session -all room group / feature relations were deleted (not just the ones of the session)
- Added workaround for a Java Bug 4466485 (URL.getFile() may return for spaces on Windows).
- UniTime 3.1 Bug Fixes & Other Improvements
- PDF Exam reports
- Reports Queue
- Process only one report at a time by putting all requests for a PDF exam report into a queue.
- Display current queue (of PDF exam reports) on the page, if it is not empty.
- There is also an ability to delete a request from the queue before it is processed.
- Also show reports (including log and output files) that were finished during the last hour.
- Exam Verification Report -Class not full-term message
- Fixed an issue with the message not being printed in some cases (POL 10100).
- Session Roll-Forward
- After rolling forward last like demand data, update the last like demand counts on the Course Offerings.
- Fix bug where solver groups were not being placed on the timetable managers during roll forward.
- Data Exchange
- Student Enrollment Import
- Update class / course enrollments by default.
- Fixed the queries that do the update to work on MySQL as well.
- When classes have no external ids, allow the given external id (in the XML file) to match on the class name.
- Student Sectioning Import
- If a new student is created, set all required properties.
- Update both sides of the course request relations (student demands requested courses) to avoid
- Hibernate cache issues.
- Other
- When a manager of a class is changed, not only delete all related class assignments (class belongs to
- a different problem), but also delete the related class event.
- This (class having an event associated but no committed assignment) was causing a problem on the
- Class Assignment page.
- Fixed a bug that was introduced in October 2009 -exam print offset got completely ignored.
- Fixes related to an old date patterns change (adding extra 3 months before and after the data pattern,
- from Jul)
- Exam print offset got completely ignored
- Week filter on Timetable page fixed
- Course timetabling solver -room availability was incorrect (all meetings got shifted by these 3 months).
- Room Allocation report (Solution Reports page) fixed.
- Add Event: Changed location search to use an in statement when searching for room groups rather than
- an or statement. This makes the search more efficient.
- Examination conflicts: query returning overlapping course meetings with required attendance improved
- Add Event: fixed a problem with creating a course event with >1000 students
- Enrollment Audits: Ensure the correct enrollment is used for the audit results when a student is enrolled
- in multiple names of a cross listed course.
- Edit Date Pattern: fixed ArrayIndexOutOfBoundsException when pattern offset is negative, assumption about
- the days of weeks corrected
- Class Assignment: remove all related constraint infos to avoid hibernate cache issues when an orphaned
- constraint info is automatically deleted
- This should fix the ObjectNotFoundException on the Class Assignment page
- Student sectioning: check for LazyInitializationException during save
- Remote solver server: added ability to override database connection string by the
- tmtbl.solver.connection.url property
- Examination verification report: limit the length of the scheduling note to fit within one line
New in UniTime 3.1 Build 284 (Oct 20, 2010)
- BUG FIXES & OTHER IMPROVEMENTS
- PDF Exam reports
- Reports Queue
- Process only one report at a time by putting all requests for a PDF exam report into a queue.
- Display current queue (of PDF exam reports) on the page, if it is not empty.
- There is also an ability to delete a request from the queue before it is processed.
- Also show reports (including log and output files) that were finished during the last hour.
- Exam Verification Report -Class not full-term message
- Fixed an issue with the message not being printed in some cases (POL 10100).
- Session Roll-Forward
- After rolling forward last like demand data, update the last like demand counts on the Course Offerings.
- Fix bug where solver groups were not being placed on the timetable managers during roll forward.
- Data Exchange
- Student Enrollment Import
- Update class / course enrollments by default.
- Fixed the queries that do the update to work on MySQL as well.
- Other
- When a manager of a class is changed, not only delete all related class assignments (class belongs to a different problem), but also delete the related class event.
- This (class having an event associated but no committed assignment) was causing a problem on the
- Class Assignment page.
New in UniTime 3.1 Build 264 (May 26, 2010)
- BUG FIXES & OTHER IMPROVEMENTS
- Student Sectioning
- Added a set of Enrollment Audit PDF reports.
- Enrollments Violating Course StructureThis report lists where students are enrolled in a class that has
- a parent class but the student is not enrolled in the parent class.
- Missing Course EnrollmentsThis report lists where student are enrolled in a course offering but are not
- enrolled in a class in each of the subparts within a configuration of the courses offering.
- Multiple Course EnrollmentsThis reports lists where students are enrolled in more than one class within
- a subpart. If a student is allowed to enroll in a course offering more than once in a term this student will
- be listed here as well.
- Session Roll-Forward
- Fixed bug that occurred when rolling forward courses that do not have a unique subject area and course number.
- Added functionality to push class time patterns up to the scheduling subpart level as part of the roll forward
- of scheduling subparts.
- Fixed bug with rolling forward a room preference for a room that does not have an external id.
- The course offering roll forward is being modified to do the following:
- 1. An option has been added to allow the user to select whether or not to roll forward subpart level time
- preferences. The default is for these preferences to roll forward as is. Required stays required, prohibited
- stays prohibited, etc. If the user chooses not to roll forward subpart level time preferences the time patterns
- will remain but the time preferences for those patterns a removed.
- 2. An option has been added to allow the user to select whether or not to roll forward subpart level location
- preferences. The default is for these preferences is to roll forward as is. If the user chooses not to roll
- forward subpart level location preferences, no room, building, room feature or room group preferences are moved
- forward.
- 3. An option has been added to allow the user to promote appropriate class preferences to the subpart level.
- The default is to do nothing with class level preferences. If the user selects to promote the appropriate
- class preferences to the subpart level and the scheduling subpart does not already have a room preference,
- then any room preferences that exist on all classes within a scheduling subpart are moved to the subpart
- level as is. The same rule applies to building, room group, and room feature preferences. In this case
- required stays required, prohibited stays prohibited, etc. If a scheduling subpart does not have any time
- patterns assigned to it, all time patterns on its child classes will be pushed up the the subpart level.
- In addition if the same time preference exists on all classes within a scheduling subpart and does not
- contain any requires or prohibits then that time preference is also moved to the subpart level.
- PDF Exam reports speedup
- Preloading student exam enrollments (this broke with the change for cross-listed exams).
- Preloading Class_ -> ClassEvent relation.
- When solver is used, preload crosslisted exams (solver does not know about them, it takes too long to load
- them one by one).
- Removed relation Class_-> sectioningInfo (using SectioningInfo -> Class_ instead where needed) to avoid
- unnecessary queries.
- Few other small changes.
- Configuration
- Hibernate DTDs bundled with the application.
- This is to avoid application deployment problems when Hibernate is unable to validate configuration because
- of a poor internet connection.
- See Q9 of http://wiki.unitime.org/Timetabling_Installation_FAQ
- Simplified JAAS configuration by using tmtbl.authenticate.modules rather than .java.login.config file.
- It contains a semicolon separated list of authentication modules with their configuration flag.
- Default is sufficient DbAuthenticateModule;sufficient LdapAuthenticateModule
- Ldap module is ignored if LDAP provider is not set
- Changes to Database Update to allow custom add on packages to UniTime to install their own database updates
- on startup.
- Other
- Instructors: When application property tmtbl.instructor.allowExternalIdEdit exists and is set to true, it is
- allowed to edit instructor external id.
- Rooms: Corrected display of departmental room groups and features (i.e., display departmental features/groups
- of the selected department).
- Added many to many relation between curricula and majors.
- Class assignment: Avoid throwing an exception when given dates are empty (this fixes the issue with SCI
- 90900 Ind 1).
- Modified Time Pattern Edit to allow a time pattern that is in use to be edited if the session is in the
- Initial Data Load status and the "tmtbl.time_pattern.initial_data_load.editable" application property is set
- to true. By default this value is "false".
- If a time pattern is edited in this state, all time preferences that refer to the time pattern will have
- their preference string set back to null. This is because modifying a time pattern changes the layout of
- the preference string for that time pattern so existing preferences using that time pattern are no longer
- valid.
New in UniTime 3.1 Build 248 (Apr 8, 2010)
- BUG FIXES & OTHER IMPROVEMENTS
- Timetable page (containing the time grid)
- Added following properties in order to be able to change the periods in which the time is printed (30 minutes periods starting 7:30am by default). The default values are as follows:
- tmtbl.timeGrid.slotsPerPeriod=6 # Number of time (5-minute long) slots per period
- tmtbl.timeGrid.firstDaySlot=90 # 90 5-minutes slots from midnight ~ 7:30 am
- tmtbl.timeGrid.lastDaySlot=209 # last day slot 5:25 pm5:30 pm
- tmtbl.timeGrid.lastEveningSlot=275 # last evening slot 10:55 pm11:00 pm
- Instructional Offerings
- Put in temporary change to prevent users from entering 9999 in the "Number of Classes" field on the
- "Instructional Offering Configuration" edit page. If the user enters 9999 in the field when they leave the field the value is set to 0.
- Remove restriction from Instructional Offering Configuration edit page that prevented the user from
- creating more than one class per scheduling subpart when working with a configuration marked as having unlimited enrollment.
- Added display of infinity symbol to limits column for classes that are part of unlimited enrollment configurations. Changed drunken 8 to be a true infinity symbol.
- Limit size of number of classes field to 3 digits on the Configuration Edit screen.
- Class Assignment
- Toggle "Do not unassign conflicting classes" moved to a more appropriate place (under the table with
- new assignments). The conflicting assignments are now recomputed on change.
- Added ability to filter the list of rooms by room types, global room groups and global room features.
- Examination Assignment
- Added ability to filter the list of rooms by room types, global room groups and global room features.
- Examination Reports
- Removed number of registered students from the Exam Statistics Report as this number may be misleading (it could include last-like students).
- Administration
- Manage Solvers: Improved checking for solver inconsistencies (fewer exceptions should be thrown when a solver instance is caught in an inconsistent state)
- Other
- If an exception is seen print a warning message (including request URI, user login and request parameters for easier debugging).
- Fixed broken compatibility with Java 5.
New in UniTime 3.1 Build 129 (Dec 28, 2008)
- Suggestions (Interactive Solver for Course Timetabling)
- Following improvements have been implemented:
- order values (placements) by their impact on the objective function,
- bound improved (estimate the solution value by taking the best possible value for unresolved variables).
- Personalized Schedule:
- Significantly improved loading speed of student examination schedule and conflicts by tweaking the ExamAssignmentInfo model (only conflicts related to the student are generated and/or loaded).
- Changed message to read "Examination Conflicts and/or Back-To-Back Examinations for" to lesson student confusion over whether they need to reschedule back-to-back exams.
- Distinguish between conflicting class or course event.
- Exam Verification Report:
- Make sure that the last page gets printed.
- Academic Sessions:
- Fixed the NullPointerException problem on Add Acedemic Session page.
- Distribution Preferences:
- Fixed bug that occurred when a distribution preferences sequence number is not set.
- Database:
- Database update to version 40 fixed (Oracle)
New in UniTime 3.1 Build 122 (Oct 28, 2008)
- Examination Timetabling:
- Examination Reports Statistics report: fixed a typo (instructor not available instead of student not available), do not print as space in PDF.
- Personalized Schedule: by default read examination conflicts from cache.
- Examination Schedule, Class Schedule: disable Apply buttons on submit.
- Fixed bug that did not submitted the screen in IE.
- Distribution Types: Fix bug that occurred when user was not a TimetableManager.
- Examination Periods: Fix case where number of students is divisible by 1000 (computation of student conflicts).
- Course Timetabling:
- Course Offering Import: Fixed bug that occurred during the Course Offering Import when a class changed itypes.
- Distribution Types: Fix bug that occurred when session was null.
- Preference Groups: Fixed bug in isEditableBy, now returns false if the user does not have a role.
- Preference Groups: Fixed bug in isViewableBy(User) caused when the user does not have a role.
- Event Management:
- Fixed bug that occurred when writing to the change log after deleting a meeting from an event.